Module:Test/data

From RimWorld Wiki
Jump to navigation Jump to search

Transformation rules

RimWorld version

Version is added to the beginning of each generated Lua table.

return {

  version = "1.2.2753",
  ...

Elements with attributes

Create a new subelement and move all of the attributes to their own subelements within it.

*Def elements

<defName> is used as part of the index for the main Def table.

Additional attributes added: "DLC", "FileName".

<ThingDef ParentName="BaseHare">
  <defName>Snowhare</defName>
  <label>snowhare</label>
  ...

transforms to:

["ThingDef:Hare"] = {
  ["_attrib_"] = {
    ["ParentName"] = "BaseHare",
    ["FileName"] = "Races_Animal_Hares.xml",
    ["DLC"] = "Core",
  },
  ["defName"] = "Snowhare",
  ["label"] = "snowhare",
  ...

Parent (abstract) Def:

<ThingDef Abstract="True" ParentName="AnimalThingBase" Name="BaseHare">
  <statBases>
    <MoveSpeed>6.0</MoveSpeed>
    <MarketValue>50</MarketValue>
    ...

transforms to:

["ThingDef:BaseHare"] = {
  ["_attrib_"] = {
    ["Abstract"] = "True",
    ["ParentName"] = "AnimalThingBase",
    ["Name"] = "BaseHare",
    ["FileName"] = "Races_Animal_Hares.xml",
    ["DLC"] = "Core",
  },
    ["statBases"] = {
      ["MoveSpeed"] = 6.0,
      ["MarketValue"] = 50,
  ...

List elements without children

Get transformed into ordered lists (numerically indexed Lua tables).

<tradeTags>
  <li>AnimalUncommon</li>
  <li>AnimalFighter</li>
</tradeTags>

transforms to:

["tradeTags"] = {
  "AnimalUncommon",
  "AnimalFighter",
},

Note: a comma after the last item in a list is not flagged as an error in Lua.

List elements with children

<lifeStageAges>
  <li>
    <def>AnimalBaby</def>
    <minAge>0</minAge>
  </li>
  <li>
    <def>AnimalJuvenile</def>
    <minAge>0.25</minAge>
  </li>
  <li>
    <def>AnimalAdult</def>
    <minAge>0.5</minAge>
  </li>
</lifeStageAges>

transforms to:

["lifeStageAges"] = {
  {
    ["def"] = "AnimalBaby",
    ["minAge"] = 0,
  },
  {
    ["def"] = "AnimalJuvenile",
    ["minAge"] = 0.25,
  },
  {
    ["def"] = "AnimalAdult",
    ["minAge"] = 0.5,
  },
},

List elements with a single attribute Class

The value of the "Class" attribute is used to rename the <li>.

<comps>
  <li Class="CompProperties_Glower">
    <glowRadius>10</glowRadius>
...

transforms to:

comps = {
  CompProperties_Glower = {
    glowRadius = 10,
...

Components

It would be useful to have some of the more used components. They can then be queried for additional functionality that some game objects have.

They can be numbered tables or, as in some of the examples above, string indexed. String indexes, in general, are simpler to use. Numeric tables I have to search through.

See #List elements with a single attribute Class

Ranges (1~2)

<overdoseSeverityOffset>0.18~0.35</overdoseSeverityOffset>

transforms to:

overdoseSeverityOffset = { ["<"]=0.18, [">"]=0.35 },

Curve points

Curves pop up in a lot of places so additional support functions for those might be in order.

Min, max, maybe average... things like that. Some (like litterSizeCurve) have a fixed amount of points (correction: even for litterSizeCurve this is not true) so you could just retrieve the first one or last (fourth), but this is not the case for all of them and is a bit ugly. Whatever the case, additional processing with wiki syntax would have to be used. This is bad (and to be avoided if possible).

<litterSizeCurve>
  <points>
    <li>(1.0, 0)</li>
    <li>(1.5, 1)</li>
    <li>(2.0, 1)</li>
    <li>(2.5, 0)</li>
</points>

transforms to:

["litterSizeCurve"] = {
  ["points"] = {
    {0.5, 0},
    {1, 1},
    {1.5, 1},
    {2.0, 0},
  },
},

Descriptions

Because of some exceptions in Royalty Defs, <description> content has to be wrapped in double square brackets (Lua multiline syntax).

MayRequire attribute

Removed.

Issues

One (data) file to rule them all

One data file or smaller ones split by categories (buildings, races, items, etc.).

Single:

  • simplicity
    • versioning
    • uploading

Split:

  • dynamic loading

Inheritance (interaction with parser)

Inheritance can be handled by the parser or the module. If the parser handles it, then for any change the dataset needs to be recreated so I'm leaning towards letting the module take care of that. In this case the only purpose of the parser is to filter data and transform it into something Lua can use.

TODO

  • Implement filtering for components (any list item that follows the same pattern)

return {

  version = "1.2.2753",

  ["BiomeDef:BorealForest"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_Cold.xml",
      DLC = "Core",
    },
    defName = "BorealForest",
    label = "boreal forest",
    description = [[Forests of coniferous trees. Despite the harsh winters, boreal forests sustain a diverse population of small and large animals, and have warm summers.]],
    movementDifficulty = 1,
    forageability = 0.75,
    foragedFood = "RawBerries",
    diseaseMtbDays = 60,
    wildPlants = {
      Plant_Grass = 8.0,
      Plant_Brambles = 2.0,
      Plant_Moss = 4.0,
      Plant_Bush = 3.0,
      Plant_TreePine = 5.0,
      Plant_TreeBirch = 1.5,
      Plant_TreePoplar = 1.2,
      Plant_Berry = 0.16,
      Plant_HealrootWild = 0.16,
    },
    wildAnimals = {
      Yak = 0.12,
      Horse = 0.15,
      Squirrel = 1,
      Hare = 1,
      Rat = 1,
      Elk = 0.5,
      Caribou = 0.5,
      Muffalo = 0.5,
      WildBoar = 0.5,
      Ibex = 0.5,
      Raccoon = 0.5,
      Turkey = 0.5,
      Deer = 0.5,
      Megasloth = 0.1,
      Fox_Red = 0.07,
      Fox_Arctic = 0.07,
      Bear_Grizzly = 0.07,
      Wolf_Timber = 0.07,
      Wolf_Arctic = 0.07,
      Cougar = 0.07,
      Lynx = 0.07,
      Warg = 0.07,
    },
  },

  ["BiomeDef:Tundra"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_Cold.xml",
      DLC = "Core",
    },
    defName = "Tundra",
    label = "tundra",
    description = [[These mostly-frozen plains bear almost no trees and little vegetation. There are a few small animals interspersed with large herds of migratory grazers and their predators.]],
    movementDifficulty = 1,
    forageability = 0.5,
    foragedFood = "RawBerries",
    diseaseMtbDays = 80,
    wildPlants = {
      Plant_Grass = 3.6,
      Plant_Moss = 0.5,
      Plant_Bush = 0.3,
      Plant_Astragalus = 0.1,
      Plant_Dandelion = 0.1,
      Plant_TreePine = 0.08,
      Plant_TreeBirch = 0.08,
      Plant_Berry = 0.07,
      Plant_HealrootWild = 0.05,
    },
    wildAnimals = {
      Hare = 2,
      Snowhare = 2,
      Caribou = 2,
      Elk = 2,
      Muffalo = 2,
      Ibex = 2,
      Megasloth = 0.2,
      Fox_Arctic = 0.07,
      Wolf_Arctic = 0.07,
      Wolf_Timber = 0.07,
      Lynx = 0.07,
      Warg = 0.07,
      Bear_Polar = 0.07,
      Bear_Grizzly = 0.07,
    },
  },

  ["BiomeDef:ColdBog"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_Cold.xml",
      DLC = "Core",
    },
    defName = "ColdBog",
    label = "cold bog",
    description = [[A wetland packed with trees and vines. Much of the marshy land here can't support heavy structures, moving around is slow due to choking vegetation. Disease is endemic in this dense, wet ecosystem.]],
    movementDifficulty = 4,
    forageability = 0.5,
    foragedFood = "RawBerries",
    diseaseMtbDays = 45,
    wildPlants = {
      Plant_Chokevine = 3.0,
      Plant_TallGrass = 2.4,
      Plant_Moss = 0.5,
      Plant_Bush = 0.3,
      Plant_Astragalus = 0.1,
      Plant_TreeWillow = 0.6,
      Plant_TreeCypress = 0.6,
      Plant_TreeMaple = 0.6,
      Plant_Berry = 0.07,
      Plant_HealrootWild = 0.05,
    },
    wildAnimals = {
      GuineaPig = 0.07,
      Yak = 0.2,
      Squirrel = 1,
      Hare = 1,
      Rat = 1,
      Elk = 0.5,
      Caribou = 0.5,
      Muffalo = 0.5,
      WildBoar = 0.5,
      Ibex = 0.5,
      Raccoon = 0.5,
      Turkey = 0.5,
      Deer = 0.5,
      Megasloth = 0.1,
      Fox_Red = 0.07,
      Fox_Arctic = 0.07,
      Wolf_Timber = 0.07,
      Wolf_Arctic = 0.07,
      Cougar = 0.07,
      Lynx = 0.07,
      Warg = 0.07,
      Bear_Polar = 0.07,
      Bear_Grizzly = 0.07,
    },
  },

  ["BiomeDef:IceSheet"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_Cold.xml",
      DLC = "Core",
    },
    defName = "IceSheet",
    label = "ice sheet",
    description = [[Sheets of ice which can be kilometers thick. There is no soil for plants to grow in. The only animals here are migrating to somewhere else - or badly lost.]],
    movementDifficulty = 1.5,
    forageability = 0,
    diseaseMtbDays = 90,
    wildAnimals = {
      Snowhare = 2,
      Muffalo = 0.1,
      Bear_Polar = 0.1,
      Wolf_Arctic = 0.1,
      Fox_Arctic = 0.1,
      Lynx = 0.1,
      Megasloth = 0.1,
    },
  },

  ["BiomeDef:SeaIce"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_Cold.xml",
      DLC = "Core",
    },
    defName = "SeaIce",
    label = "sea ice",
    description = [[Permanent ice sheets floating on water. There is no soil for plants to grow, no minerals to mine, and almost no animal life.]],
    movementDifficulty = 1.5,
    forageability = 0,
    diseaseMtbDays = 90,
    wildAnimals = {
      Snowhare = 2,
      Muffalo = 0.1,
      Bear_Polar = 0.1,
      Wolf_Arctic = 0.1,
      Fox_Arctic = 0.1,
    },
  },

  ["BiomeDef:TemperateForest"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_Temperate.xml",
      DLC = "Core",
    },
    defName = "TemperateForest",
    label = "temperate forest",
    description = [[Forests of deciduous trees interspersed with fertile clearings. Many species of animals move around among the trees and on the plains.]],
    movementDifficulty = 1,
    forageability = 1,
    foragedFood = "RawBerries",
    diseaseMtbDays = 50,
    wildPlants = {
      Plant_Grass = 5.0,
      Plant_TallGrass = 2.0,
      Plant_Brambles = 1.0,
      Plant_Dandelion = 0.5,
      Plant_Bush = 0.6,
      Plant_TreeOak = 0.5,
      Plant_TreePoplar = 0.5,
      Plant_Berry = 0.05,
      Plant_HealrootWild = 0.05,
    },
    wildAnimals = {
      Donkey = 0.20,
      GuineaPig = 0.45,
      Yak = 0.06,
      Bison = 0.07,
      Horse = 0.20,
      Hare = 1.0,
      Squirrel = 1.0,
      Rat = 1.0,
      Deer = 0.5,
      WildBoar = 0.5,
      Turkey = 0.5,
      Raccoon = 0.5,
      Ibex = 0.5,
      Muffalo = 0.5,
      Alpaca = 0.5,
      Boomalope = 0.4,
      Boomrat = 0.4,
      Tortoise = 0.3,
      Gazelle = 0.3,
      Megasloth = 0.2,
      Rhinoceros = 0.1,
      Bear_Grizzly = 0.07,
      Wolf_Timber = 0.07,
      Fox_Red = 0.07,
      Cougar = 0.07,
      Lynx = 0.07,
      Warg = 0.07,
    },
  },

  ["BiomeDef:TemperateSwamp"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_Temperate.xml",
      DLC = "Core",
    },
    defName = "TemperateSwamp",
    label = "temperate swamp",
    description = [[Wetlands choked with vegetation and disease. Dense overgrowth makes it hard to move around, and clearing areas for building takes a long time. Much of the terrain is too marshy to support heavy structures.]],
    movementDifficulty = 4,
    forageability = 0.75,
    foragedFood = "RawBerries",
    diseaseMtbDays = 40,
    wildPlants = {
      Plant_TallGrass = 3.2,
      Plant_Chokevine = 0.8,
      Plant_Bush = 0.2,
      Plant_TreeWillow = 1.0,
      Plant_TreeCypress = 1.0,
      Plant_TreeMaple = 1.0,
      Plant_Berry = 0.05,
      Plant_HealrootWild = 0.05,
    },
    wildAnimals = {
      GuineaPig = 0.15,
      Yak = 0.04,
      Horse = 0.20,
      Hare = 1.0,
      Squirrel = 1.0,
      Rat = 1.0,
      Tortoise = 0.6,
      Deer = 0.5,
      WildBoar = 0.5,
      Turkey = 0.5,
      Raccoon = 0.5,
      Ibex = 0.5,
      Muffalo = 0.5,
      Alpaca = 0.5,
      Boomalope = 0.4,
      Boomrat = 0.4,
      Megasloth = 0.2,
      Rhinoceros = 0.1,
      Bear_Grizzly = 0.07,
      Wolf_Timber = 0.07,
      Fox_Red = 0.07,
      Cougar = 0.07,
      Lynx = 0.07,
      Warg = 0.07,
    },
  },

  ["BiomeDef:TropicalRainforest"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_Warm.xml",
      DLC = "Core",
    },
    defName = "TropicalRainforest",
    label = "tropical rainforest",
    description = [[A thick, moist jungle, buzzing with animal life and infested with disease. Despite its visual beauty, this is a very dangerous biome. Choking overgrowth, aggressive animals, and constant sickness are why some explorers call this the "green hell".]],
    movementDifficulty = 2,
    forageability = 1,
    foragedFood = "RawBerries",
    diseaseMtbDays = 35,
    wildPlants = {
      Plant_Grass = 3.0,
      Plant_TallGrass = 2.0,
      Plant_ShrubLow = 2.0,
      Plant_Alocasia = 0.8,
      Plant_TreeCecropia = 0.3,
      Plant_TreePalm = 0.3,
      Plant_TreeBamboo = 0.3,
      Plant_TreeTeak = 0.2,
      Plant_Bush = 0.15,
      Plant_Clivia = 0.07,
      Plant_Berry = 0.05,
      Plant_Rafflesia = 0.0008,
    },
    wildAnimals = {
      GuineaPig = 0.25,
      Rat = 1,
      Monkey = 1,
      Boomalope = 0.5,
      Capybara = 0.5,
      Cassowary = 0.5,
      Tortoise = 0.5,
      Chinchilla = 0.5,
      WildBoar = 0.5,
      Elephant = 0.5,
      Rhinoceros = 0.5,
      Alpaca = 0.5,
      Cobra = 0.15,
      Panther = 0.15,
    },
  },

  ["BiomeDef:TropicalSwamp"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_Warm.xml",
      DLC = "Core",
    },
    defName = "TropicalSwamp",
    label = "tropical swamp",
    description = [[A plant-choked, steamy swamp seething with parasites and pathogens. Much of the land is too marshy to build on. Difficult movement, aggressive animals, and rampant disease make living here a nightmare.]],
    movementDifficulty = 4,
    forageability = 0.75,
    foragedFood = "RawBerries",
    diseaseMtbDays = 30,
    wildPlants = {
      Plant_TallGrass = 4.8,
      Plant_ShrubLow = 2.0,
      Plant_TreeWillow = 1.72,
      Plant_TreeCypress = 1.72,
      Plant_TreeMaple = 1.72,
      Plant_Chokevine = 0.8,
      Plant_Alocasia = 0.8,
      Plant_Bush = 0.15,
      Plant_Clivia = 0.07,
      Plant_Berry = 0.05,
      Plant_Rafflesia = 0.0008,
    },
    wildAnimals = {
      GuineaPig = 0.18,
      Rat = 1,
      Monkey = 1,
      Boomalope = 0.5,
      Capybara = 0.5,
      Cassowary = 0.5,
      Tortoise = 0.5,
      Chinchilla = 0.5,
      WildBoar = 0.5,
      Elephant = 0.5,
      Rhinoceros = 0.5,
      Alpaca = 0.5,
      Cobra = 0.15,
      Panther = 0.15,
    },
  },

  ["BiomeDef:AridShrubland"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_WarmArid.xml",
      DLC = "Core",
    },
    defName = "AridShrubland",
    label = "arid shrubland",
    description = [[A dry region, but not dry enough to become a true desert. Open plains with grasses and bushes give way to scattered groves of trees. Plants are hardy and there is a moderate density of animals, but arable soil is hard to find.]],
    movementDifficulty = 1,
    forageability = 0.5,
    foragedFood = "RawAgave",
    diseaseMtbDays = 65,
    wildPlants = {
      Plant_Grass = 7.0,
      Plant_Dandelion = 0.8,
      Plant_Bush = 0.7,
      Plant_PincushionCactus = 0.6,
      Plant_Agave = 0.2,
      Plant_SaguaroCactus = 0.26,
      Plant_TreeDrago = 0.20,
      Plant_Berry = 0.10,
    },
    wildAnimals = {
      Donkey = 0.2,
      GuineaPig = 0.017,
      Horse = 0.1,
      Bison = 0.1,
      Rat = 1.3,
      Hare = 1.3,
      Iguana = 0.7,
      Gazelle = 0.7,
      Ostrich = 0.7,
      Emu = 0.7,
      Dromedary = 0.7,
      Boomrat = 0.5,
      Elephant = 0.5,
      Rhinoceros = 0.5,
      Boomalope = 0.5,
      Cougar = 0.15,
      Fox_Fennec = 0.15,
      Megasloth = 0.1,
    },
  },

  ["BiomeDef:Desert"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_WarmArid.xml",
      DLC = "Core",
    },
    defName = "Desert",
    label = "desert",
    description = [[A very dry area which supports little life. There is very little arable land, and animal life is very sparse. Deserts can be hot, or quite cold.]],
    movementDifficulty = 1,
    forageability = 0.25,
    foragedFood = "RawAgave",
    diseaseMtbDays = 90,
    wildPlants = {
      Plant_Grass = 6,
      Plant_PincushionCactus = 1,
      Plant_SaguaroCactus = 1.0,
      Plant_Dandelion = 0.5,
      Plant_TreeDrago = 0.45,
      Plant_Agave = 0.25,
      Plant_Bush = 0.25,
    },
    wildAnimals = {
      Donkey = 0.15,
      GuineaPig = 0.01,
      Iguana = 1.2,
      Dromedary = 0.7,
      Boomalope = 0.6,
      Ostrich = 0.6,
      Emu = 0.6,
      Gazelle = 0.6,
      Cougar = 0.07,
      Fox_Fennec = 0.07,
    },
  },

  ["BiomeDef:ExtremeDesert"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_WarmArid.xml",
      DLC = "Core",
    },
    defName = "ExtremeDesert",
    label = "extreme desert",
    description = [[An extremely hot, dry area, devoid of almost all life. Searing heat and a near total lack of arable land make it very difficult to survive here.]],
    movementDifficulty = 1,
    forageability = 0,
    diseaseMtbDays = 90,
    wildPlants = {
      Plant_Grass = 6,
      Plant_SaguaroCactus = 1,
      Plant_Agave = 0.25,
    },
    wildAnimals = {
      Donkey = 0.20,
      GuineaPig = 0.002,
      Iguana = 1.5,
      Dromedary = 0.2,
      Fox_Fennec = 0.1,
    },
  },

  ["BiomeDef:Ocean"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_Water.xml",
      DLC = "Core",
    },
    defName = "Ocean",
    label = "ocean",
    description = [[Open ocean. Great for fish. Not so great for you.]],
  },

  ["BiomeDef:Lake"] = {
    _ = {
      DefCategory = "BiomeDef",
      FileName = "Biomes_Water.xml",
      DLC = "Core",
    },
    defName = "Lake",
    label = "lake",
    description = [[A large lake. Beautiful to live next to. Not so beautiful to live in.]],
  },

  ["ThingDef:Beer"] = {
    _ = {
      ParentName = "DrugBase",
      DefCategory = "ThingDef",
      FileName = "Alcohol_Beer.xml",
      DLC = "Core",
    },
    defName = "Beer",
    label = "beer",
    description = [[The first beverage besides water ever consumed by mankind. Beer can taste good, but its main effect is intoxication. Excessive consumption can lead to alcohol blackouts and, over time, addiction.]],
    stackLimit = 25,
    statBases = {
      DeteriorationRate = 0.5,
      MarketValue = 12,
      Mass = 0.3,
      Flammability = 0.5,
      Nutrition = 0.08,
    },
    ingestible = {
      foodType = {
        "Fluid",
        "Processed",
        "Liquor",
      },
      joyKind = "Chemical",
      joy = 0.17,
      drugCategory = "Social",
      chairSearchRadius = 25,
      canAutoSelectAsFoodForCaravan = false,
      outcomeDoers = {
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "AlcoholHigh",
          severity = 0.15,
          toleranceChemical = "Alcohol",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "AlcoholTolerance",
          severity = 0.016,
          divideByBodySize = true,
        },
      },
    },
    comps = {
      CompProperties_Drug = {
        chemical = "Alcohol",
        addictiveness = 0.010,
        minToleranceToAddict = 0.25,
        existingAddictionSeverityOffset = 0.20,
        needLevelOffset = 0.9,
        listOrder = 10,
      },
      {
        compClass = "CompEquippable",
      },
    },
    tools = {
      {
        label = "bottle",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "neck",
        capacities = {
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Wort"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Alcohol_Beer.xml",
      DLC = "Core",
    },
    defName = "Wort",
    label = "wort",
    description = [[Un-fermented beer. This substance needs to ferment in a fermenting barrel before it becomes drinkable beer.]],
    stackLimit = 25,
    thingCategories = {
      "Manufactured",
    },
    statBases = {
      DeteriorationRate = 1.0,
      MarketValue = 2.5,
      Mass = 0.8,
      Flammability = 0.2,
      MaxHitPoints = 60,
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 5,
        rotDestroys = true,
      },
    },
  },

  ["ThingDef:Ambrosia"] = {
    _ = {
      ParentName = "DrugBase",
      DefCategory = "ThingDef",
      FileName = "Ambrosia.xml",
      DLC = "Core",
    },
    defName = "Ambrosia",
    label = "ambrosia",
    description = [[A soft, rare fruit. Ambrosia tastes wonderful and produces a subtle mood-increasing chemical high. However, if eaten too often, it can generate a mild addiction.]],
    tradeability = "Sellable",
    statBases = {
      MarketValue = 15,
      Mass = 0.1,
      DeteriorationRate = 4,
      Nutrition = 0.2,
    },
    ingestible = {
      baseIngestTicks = 80,
      chairSearchRadius = 4,
      preferability = "DesperateOnly",
      tasteThought = {},
      foodType = {
        "VegetableOrFruit",
      },
      joyKind = "Chemical",
      joy = 0.5,
      drugCategory = "Social",
      canAutoSelectAsFoodForCaravan = false,
      outcomeDoers = {
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "AmbrosiaHigh",
          severity = 0.50,
          toleranceChemical = "Ambrosia",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "AmbrosiaTolerance",
          severity = 0.032,
          divideByBodySize = true,
        },
      },
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 30,
        rotDestroys = true,
      },
      CompProperties_Drug = {
        chemical = "Ambrosia",
        addictiveness = 0.010,
        minToleranceToAddict = 0.15,
        existingAddictionSeverityOffset = 0.1,
        needLevelOffset = 0.9,
        listOrder = 30,
      },
    },
  },

  ["ThingDef:DrugBase"] = {
    _ = {
      Name = "DrugBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "DrugBases.xml",
      DLC = "Core",
    },
    thingClass = "ThingWithComps",
    category = "Item",
    useHitPoints = true,
    statBases = {
      MaxHitPoints = 50,
      Flammability = 1.0,
      DeteriorationRate = 2,
      Beauty = -4,
    },
    altitudeLayer = "Item",
    stackLimit = 150,
    thingCategories = {
      "Drugs",
    },
    tradeTags = {
      "Drugs",
    },
    comps = {
      CompProperties_Forbiddable = {},
    },
    pathCost = 14,
    ingestible = {
      preferability = "NeverForNutrition",
      chairSearchRadius = 8,
    },
  },

  ["ThingDef:MakeableDrugBase"] = {
    _ = {
      Name = "MakeableDrugBase",
      ParentName = "DrugBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "DrugBases.xml",
      DLC = "Core",
    },
    recipeMaker = {
      workSpeedStat = "DrugSynthesisSpeed",
      workSkill = "Intellectual",
      effectWorking = "Cook",
      soundWorking = "Recipe_CookMeal",
      bulkRecipeCount = 4,
    },
  },

  ["ThingDef:MakeableDrugPillBase"] = {
    _ = {
      Name = "MakeableDrugPillBase",
      ParentName = "MakeableDrugBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "DrugBases.xml",
      DLC = "Core",
    },
    ingestible = {
      foodType = {
        "Processed",
      },
      baseIngestTicks = 100,
      chairSearchRadius = 0,
    },
  },

  ["ThingDef:DrugPillBase"] = {
    _ = {
      Name = "DrugPillBase",
      ParentName = "DrugBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "DrugBases.xml",
      DLC = "Core",
    },
    ingestible = {
      foodType = {
        "Processed",
      },
      baseIngestTicks = 100,
      chairSearchRadius = 0,
    },
  },

  ["ThingDef:GoJuice"] = {
    _ = {
      ParentName = "MakeableDrugBase",
      DefCategory = "ThingDef",
      FileName = "GoJuice.xml",
      DLC = "Core",
    },
    defName = "GoJuice",
    label = "go-juice",
    description = [[A synthetic performance-enhancing drug developed for space marines during the early days of interplanetary warfare. Go-juice blocks pain, increases movement speed, and improves the user's melee and shooting abilities.\n\nThe military chemists who created it were never able to remove its addictiveness. Some saw this as a downside; others saw it as a benefit.]],
    statBases = {
      WorkToMake = 600,
      MarketValue = 53,
      Mass = 0.1,
    },
    ingestible = {
      joyKind = "Chemical",
      joy = 0.40,
      drugCategory = "Hard",
      foodType = {
        "Processed",
        "Fluid",
      },
      baseIngestTicks = 80,
      chairSearchRadius = 0,
      outcomeDoers = {
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "GoJuiceHigh",
          severity = 0.5,
          toleranceChemical = "GoJuice",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_OffsetNeed",
          },
          need = "Rest",
          offset = 0.4,
          toleranceChemical = "GoJuice",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_OffsetPsyfocus",
          },
          offset = 0.15,
        },
      },
    },
    recipeMaker = {
      researchPrerequisite = "GoJuiceProduction",
      recipeUsers = {
        "DrugLab",
      },
      soundWorking = "Recipe_Drug",
    },
    costList = {
      Neutroamine = 2,
      Yayo = 1,
    },
    comps = {
      CompProperties_Drug = {
        chemical = "GoJuice",
        addictiveness = 0.026,
        existingAddictionSeverityOffset = 0.20,
        needLevelOffset = 0.9,
        isCombatEnhancingDrug = true,
        listOrder = 200,
        overdoseSeverityOffset = { ["<"]=0.18, [">"]=0.35 },
        largeOverdoseChance = 0.005,
      },
    },
  },

  ["ThingDef:Luciferium"] = {
    _ = {
      ParentName = "DrugPillBase",
      DefCategory = "ThingDef",
      FileName = "Luciferium.xml",
      DLC = "Core",
    },
    defName = "Luciferium",
    label = "luciferium",
    description = [[A concoction of mechanites that dramatically improve the body's functioning in all respects. Over time, it can even heal old scarred-over wounds or brain damage, though it cannot regenerate lost limbs. Unfortunately, without the moderating effects of regular doses every five or six days, the mechanites lose cohesion, causing continuous berserk rages and, eventually, death.\n\nAfter the first dose, there is no way to get the mechanites out, ever.\n\nOn the urbworlds, they call Luciferium the 'Devil's Bargain'. Many have been forced to kill friends when no more of the seductive red pills could be found.]],
    statBases = {
      MarketValue = 70,
      Mass = 0.01,
    },
    ingestible = {
      drugCategory = "Medical",
      outcomeDoers = {
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "LuciferiumHigh",
          severity = 1.00,
          doToGeneratedPawnIfAddicted = true,
        },
      },
    },
    comps = {
      CompProperties_Drug = {
        chemical = "Luciferium",
        addictiveness = 1.00,
        needLevelOffset = 0.9,
        listOrder = 1010,
      },
    },
    tradeTags = {
      "ExoticMisc",
    },
  },

  ["ThingDef:Penoxycyline"] = {
    _ = {
      ParentName = "MakeableDrugPillBase",
      DefCategory = "ThingDef",
      FileName = "Penoxycyline.xml",
      DLC = "Core",
    },
    defName = "Penoxycyline",
    label = "penoxycyline",
    description = [[A drug for preventing infections before they take hold. Blocks malaria, sleeping sickness, plague. Must be taken every five days to remain effective.\n\nThis drug only prevents new infections. It does not cure existing infections - even those that are not yet discovered.]],
    statBases = {
      WorkToMake = 600,
      MarketValue = 18,
      Mass = 0.005,
      Flammability = 0.7,
    },
    ingestible = {
      drugCategory = "Medical",
      outcomeDoers = {
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "PenoxycylineHigh",
          severity = 1.0,
        },
      },
    },
    recipeMaker = {
      researchPrerequisite = "PenoxycylineProduction",
      recipeUsers = {
        "DrugLab",
      },
    },
    costList = {
      Neutroamine = 2,
    },
    comps = {
      CompProperties_Drug = {
        listOrder = 1000,
        overdoseSeverityOffset = { ["<"]=0.08, [">"]=0.14 },
      },
    },
  },

  ["ThingDef:Flake"] = {
    _ = {
      ParentName = "MakeableDrugBase",
      DefCategory = "ThingDef",
      FileName = "Psychite_Flake.xml",
      DLC = "Core",
    },
    defName = "Flake",
    label = "flake",
    description = [[A flaky white preparation of psychite that can be smoked to induce a short but powerful euphoric state. While it is cheap to produce and extremely pleasurable to use, it is exceptionally addictive. Flake is known for destroying lives, communities, and entire societies.]],
    statBases = {
      WorkToMake = 250,
      MarketValue = 14,
      Mass = 0.05,
    },
    ingestible = {
      foodType = {
        "Processed",
      },
      joyKind = "Chemical",
      joy = 0.70,
      baseIngestTicks = 650,
      drugCategory = "Hard",
      outcomeDoers = {
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "FlakeHigh",
          severity = 0.75,
          toleranceChemical = "Psychite",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_OffsetNeed",
          },
          need = "Rest",
          offset = 0.2,
          toleranceChemical = "Psychite",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "PsychiteTolerance",
          severity = 0.04,
          divideByBodySize = true,
        },
      },
    },
    recipeMaker = {
      researchPrerequisite = "PsychiteRefining",
      recipeUsers = {
        "DrugLab",
      },
      soundWorking = "Recipe_Drug",
    },
    costList = {
      PsychoidLeaves = 4,
    },
    comps = {
      CompProperties_Drug = {
        chemical = "Psychite",
        addictiveness = 0.05,
        existingAddictionSeverityOffset = 0.30,
        needLevelOffset = 0.9,
        listOrder = 110,
        overdoseSeverityOffset = { ["<"]=0.18, [">"]=0.35 },
        largeOverdoseChance = 0.015,
      },
    },
  },

  ["ThingDef:PsychiteTea"] = {
    _ = {
      ParentName = "MakeableDrugBase",
      DefCategory = "ThingDef",
      FileName = "Psychite_Tea.xml",
      DLC = "Core",
    },
    defName = "PsychiteTea",
    label = "psychite tea",
    description = [[A fragrant tea infused with leaves of the psychoid plant. Drinking it induces a subtle psychite euphoria. This tea is easy to produce at cooking facilities, but can produce psychite addiction if consumed too often.\n\nMany tribes use psychoid tea, both as a daily energizer and as part of social and religious rituals.]],
    statBases = {
      WorkToMake = 400,
      MarketValue = 10,
      Mass = 0.05,
      DeteriorationRate = 6,
    },
    ingestible = {
      foodType = {
        "Fluid",
        "Processed",
      },
      joyKind = "Chemical",
      joy = 0.40,
      baseIngestTicks = 210,
      drugCategory = "Social",
      outcomeDoers = {
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "PsychiteTeaHigh",
          severity = 0.75,
          toleranceChemical = "Psychite",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_OffsetNeed",
          },
          need = "Rest",
          offset = 0.1,
          toleranceChemical = "Psychite",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "PsychiteTolerance",
          severity = 0.03,
          divideByBodySize = true,
        },
      },
    },
    recipeMaker = {
      researchPrerequisite = "PsychoidBrewing",
      recipeUsers = {
        "Campfire",
        "ElectricStove",
        "FueledStove",
      },
      workSpeedStat = "DrugCookingSpeed",
      workSkill = "Cooking",
      skillRequirements = {
        Cooking = 2,
      },
      requiredGiverWorkType = "Cooking",
    },
    costList = {
      PsychoidLeaves = 4,
    },
    comps = {
      CompProperties_Drug = {
        chemical = "Psychite",
        addictiveness = 0.02,
        minToleranceToAddict = 0.10,
        existingAddictionSeverityOffset = 0.15,
        needLevelOffset = 0.9,
        listOrder = 110,
      },
    },
  },

  ["ThingDef:Yayo"] = {
    _ = {
      ParentName = "MakeableDrugBase",
      DefCategory = "ThingDef",
      FileName = "Psychite_Yayo.xml",
      DLC = "Core",
    },
    defName = "Yayo",
    label = "yayo",
    description = [[A refined powdery preparation of the psychite drug. When snorted, it produces a rapid euphoric high, dramatically reduces the user's need for rest, and suppresses pain. Like all forms of psychite, it is addictive, though it is not as addictive as the cruder flake.\n\nBecause of its high cost and refined appearance, many cultures associate yayo with degenerate wealth. Whether in the throneroom or the boardroom, many hare-brained policy schemes have been developed during yayo-fueled binge parties.]],
    statBases = {
      WorkToMake = 350,
      MarketValue = 21,
      Mass = 0.05,
    },
    ingestible = {
      foodType = {
        "Processed",
      },
      joyKind = "Chemical",
      joy = 0.80,
      drugCategory = "Hard",
      baseIngestTicks = 150,
      outcomeDoers = {
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "YayoHigh",
          severity = 0.75,
          toleranceChemical = "Psychite",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_OffsetNeed",
          },
          need = "Rest",
          offset = 0.4,
          toleranceChemical = "Psychite",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "PsychiteTolerance",
          severity = 0.040,
          divideByBodySize = true,
        },
      },
    },
    recipeMaker = {
      researchPrerequisite = "PsychiteRefining",
      recipeUsers = {
        "DrugLab",
      },
      soundWorking = "Recipe_Drug",
    },
    costList = {
      PsychoidLeaves = 8,
    },
    comps = {
      CompProperties_Drug = {
        chemical = "Psychite",
        addictiveness = 0.01,
        existingAddictionSeverityOffset = 0.20,
        needLevelOffset = 0.9,
        isCombatEnhancingDrug = true,
        listOrder = 100,
        overdoseSeverityOffset = { ["<"]=0.18, [">"]=0.35 },
        largeOverdoseChance = 0.01,
      },
    },
  },

  ["ThingDef:SmokeleafJoint"] = {
    _ = {
      ParentName = "MakeableDrugBase",
      DefCategory = "ThingDef",
      FileName = "Smokeleaf.xml",
      DLC = "Core",
    },
    defName = "SmokeleafJoint",
    label = "smokeleaf joint",
    description = [[Smokeleaf leaves prepared in small rolls for smoking. The drug improves mood, but also increases appetite, reduces focus and slows movement. Smokeleaf use can produce a dependency.\n\nJoints can be produced at a crafting spot without equipment, and are a fixture in many traditional low-industriousness cultures.]],
    statBases = {
      WorkToMake = 450,
      MarketValue = 11,
      Mass = 0.05,
      DeteriorationRate = 6,
      Flammability = 1.3,
    },
    ingestible = {
      foodType = {
        "Plant",
        "Processed",
      },
      joyKind = "Chemical",
      joy = 0.80,
      baseIngestTicks = 720,
      drugCategory = "Social",
      outcomeDoers = {
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "SmokeleafHigh",
          severity = 0.5,
          toleranceChemical = "Smokeleaf",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_OffsetNeed",
          },
          need = "Rest",
          offset = -0.1,
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "SmokeleafTolerance",
          severity = 0.030,
          divideByBodySize = true,
        },
      },
    },
    recipeMaker = {
      recipeUsers = {
        "CraftingSpot",
        "DrugLab",
      },
      workSpeedStat = "DrugCookingSpeed",
      workSkill = "Cooking",
    },
    costList = {
      SmokeleafLeaves = 4,
    },
    comps = {
      CompProperties_Drug = {
        chemical = "Smokeleaf",
        addictiveness = 0.020,
        minToleranceToAddict = 0.15,
        existingAddictionSeverityOffset = 0.06,
        needLevelOffset = 0.9,
        listOrder = 20,
      },
    },
  },

  ["ThingDef:WakeUp"] = {
    _ = {
      ParentName = "MakeableDrugPillBase",
      DefCategory = "ThingDef",
      FileName = "WakeUp.xml",
      DLC = "Core",
    },
    defName = "WakeUp",
    label = "wake-up",
    description = [[A synthetic stimulant. Wake-up fills the user's need for rest, allowing them to work for extended periods without getting tired. However, taking wake-up runs the risk of developing an addiction.\n\nIn the most competitive universities and companies of many worlds, high-achievers are sometimes called 'wake-ups' because of the association with this drug.]],
    statBases = {
      WorkToMake = 900,
      MarketValue = 35,
      Mass = 0.005,
    },
    ingestible = {
      joyKind = "Chemical",
      joy = 0.40,
      drugCategory = "Hard",
      outcomeDoers = {
        {
          _ = {
            Class = "IngestionOutcomeDoer_GiveHediff",
          },
          hediffDef = "WakeUpHigh",
          severity = 0.75,
          toleranceChemical = "WakeUp",
        },
        {
          _ = {
            Class = "IngestionOutcomeDoer_OffsetNeed",
          },
          need = "Rest",
          offset = 1.0,
          toleranceChemical = "WakeUp",
        },
      },
    },
    recipeMaker = {
      researchPrerequisite = "WakeUpProduction",
      recipeUsers = {
        "DrugLab",
      },
    },
    costList = {
      Neutroamine = 2,
    },
    comps = {
      CompProperties_Drug = {
        chemical = "WakeUp",
        addictiveness = 0.02,
        existingAddictionSeverityOffset = 0.20,
        needLevelOffset = 0.9,
        listOrder = 210,
        overdoseSeverityOffset = { ["<"]=0.18, [">"]=0.35 },
        largeOverdoseChance = 0.005,
      },
    },
  },

  ["ThingDef:Mote_SparkThrown"] = {
    _ = {
      ParentName = "MoteBase",
      DefCategory = "ThingDef",
      FileName = "Effecter_Construction.xml",
      DLC = "Core",
    },
    defName = "Mote_SparkThrown",
    altitudeLayer = "Projectile",
  },

  ["ThingDef:Mote_SparkThrownFast"] = {
    _ = {
      ParentName = "MoteBase",
      DefCategory = "ThingDef",
      FileName = "Effecter_Damage.xml",
      DLC = "Core",
    },
    defName = "Mote_SparkThrownFast",
    altitudeLayer = "Projectile",
  },

  ["ThingDef:Mote_SparkThrownFastBlue"] = {
    _ = {
      ParentName = "MoteBase",
      DefCategory = "ThingDef",
      FileName = "Effecter_Damage.xml",
      DLC = "Core",
    },
    defName = "Mote_SparkThrownFastBlue",
    altitudeLayer = "Projectile",
  },

  ["ThingDef:Mote_LongSparkThrown"] = {
    _ = {
      ParentName = "MoteBase",
      DefCategory = "ThingDef",
      FileName = "Effecter_Damage.xml",
      DLC = "Core",
    },
    defName = "Mote_LongSparkThrown",
    altitudeLayer = "Projectile",
  },

  ["ThingDef:Mote_Splash"] = {
    _ = {
      ParentName = "MoteBase",
      DefCategory = "ThingDef",
      FileName = "Effecter_Damage.xml",
      DLC = "Core",
    },
    defName = "Mote_Splash",
    altitudeLayer = "MoteOverhead",
  },

  ["ThingDef:Mote_ToxicDamage"] = {
    _ = {
      ParentName = "MoteBase",
      DefCategory = "ThingDef",
      FileName = "Effecter_Damage.xml",
      DLC = "Core",
    },
    defName = "Mote_ToxicDamage",
    altitudeLayer = "MoteOverhead",
  },

  ["ThingDef:Mote_SmokeJoint"] = {
    _ = {
      ParentName = "MoteBase",
      DefCategory = "ThingDef",
      FileName = "Effecter_Ingest.xml",
      DLC = "Core",
    },
    defName = "Mote_SmokeJoint",
    thingClass = "MoteThrown",
    altitudeLayer = "MoteOverhead",
  },

  ["ThingDef:Mote_SmokeFlake"] = {
    _ = {
      ParentName = "MoteBase",
      DefCategory = "ThingDef",
      FileName = "Effecter_Ingest.xml",
      DLC = "Core",
    },
    defName = "Mote_SmokeFlake",
    thingClass = "MoteThrown",
    altitudeLayer = "MoteOverhead",
  },

  ["ThingDef:Mote_ExtinguisherPuff"] = {
    _ = {
      ParentName = "MoteBase",
      DefCategory = "ThingDef",
      FileName = "Effecter_Misc.xml",
      DLC = "Core",
    },
    defName = "Mote_ExtinguisherPuff",
    altitudeLayer = "MoteOverhead",
  },

  ["ThingDef:BodyPartArchotechBase"] = {
    _ = {
      Name = "BodyPartArchotechBase",
      ParentName = "BodyPartBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Archotech.xml",
      DLC = "Core",
    },
    thingCategories = {
      "BodyPartsArchotech",
    },
    statBases = {
      DeteriorationRate = 0,
    },
  },

  ["ThingDef:ArchotechEye"] = {
    _ = {
      ParentName = "BodyPartArchotechBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Archotech.xml",
      DLC = "Core",
    },
    defName = "ArchotechEye",
    label = "archotech eye",
    description = [[An artifical eye built by an archotech. It perceives every type of electromagnetic radiation, including radio waves, infrared, light, x-rays, and gamma rays. Its visual acuity is precise enough to read handwriting from twenty meters away. It can emit various wavelengths of radiation like a flashlight, and has an internal subpersona AI which helps highlight useful visual information. Externally, it looks like a natural human eye, except it can change color at will. Its internal workings are a mystery to all human minds.]],
    statBases = {
      MarketValue = 2800,
      Mass = 0.3,
    },
  },

  ["ThingDef:ArchotechArm"] = {
    _ = {
      ParentName = "BodyPartArchotechBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Archotech.xml",
      DLC = "Core",
    },
    defName = "ArchotechArm",
    label = "archotech arm",
    description = [[An artifical arm built by an archotech. It's strong enough to crush a thick hardwood branch in its hand, and precise enough to write a sonnet on a grain of rice. It looks and feels like natural flesh, but it's harder to damage than plasteel. Even if it is harmed, it repairs itself over time. Its internal workings are a mystery to all human minds.]],
    statBases = {
      MarketValue = 2800,
      Mass = 4,
    },
  },

  ["ThingDef:ArchotechLeg"] = {
    _ = {
      ParentName = "BodyPartArchotechBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Archotech.xml",
      DLC = "Core",
    },
    defName = "ArchotechLeg",
    label = "archotech leg",
    description = [[An artifical leg built by an archotech. It looks and feels like natural flesh, but a pair of these can move the user as fast as a decent car, and it's harder to damage than plasteel. Even if it is harmed, it repairs itself over time. Its internal workings are a mystery to all human minds.]],
    statBases = {
      MarketValue = 2800,
      Mass = 7,
    },
  },

  ["ThingDef:BodyPartBase"] = {
    _ = {
      Name = "BodyPartBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Base.xml",
      DLC = "Core",
    },
    thingClass = "ThingWithComps",
    category = "Item",
    useHitPoints = true,
    altitudeLayer = "Item",
    pathCost = 14,
    statBases = {
      MaxHitPoints = 50,
      Flammability = 0.7,
      Beauty = -4,
      DeteriorationRate = 2.0,
      Mass = 1,
    },
    tradeTags = {
      "TechHediff",
    },
    comps = {
      CompProperties_Forbiddable = {},
    },
  },

  ["ThingDef:BodyPartBionicBase"] = {
    _ = {
      Name = "BodyPartBionicBase",
      ParentName = "BodyPartBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic.xml",
      DLC = "Core",
    },
    thingCategories = {
      "BodyPartsBionic",
    },
    tradeTags = {
      "Bionic",
    },
    statBases = {
      WorkToMake = 26000,
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Smith",
      unfinishedThingDef = "UnfinishedHealthItemBionic",
      skillRequirements = {
        Crafting = 8,
      },
      researchPrerequisite = "Bionics",
      recipeUsers = {
        "FabricationBench",
      },
    },
  },

  ["ThingDef:BionicEye"] = {
    _ = {
      ParentName = "BodyPartBionicBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic.xml",
      DLC = "Core",
    },
    defName = "BionicEye",
    label = "bionic eye",
    description = [[An advanced artifical eye. With its biogel nerve-link, internal signal pre-processor, and wide-spectrum sensors, it is better than a biological eye in almost every way. A lattice-dust healing system allows it to recover from damage.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    statBases = {
      Mass = 0.3,
    },
  },

  ["ThingDef:BionicArm"] = {
    _ = {
      ParentName = "BodyPartBionicBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic.xml",
      DLC = "Core",
    },
    defName = "BionicArm",
    label = "bionic arm",
    description = [[An advanced artificial arm. Silenced mini-servos give great strength, while the biogel nerve-link gives exquisite control. A lattice-dust healing system allows it to recover from damage. It is better than a biological arm in almost every way.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    statBases = {
      Mass = 5,
    },
  },

  ["ThingDef:BionicLeg"] = {
    _ = {
      ParentName = "BodyPartBionicBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic.xml",
      DLC = "Core",
    },
    defName = "BionicLeg",
    label = "bionic leg",
    description = [[An advanced artificial leg. With its biogel nerve-link, powerful mini-servos, and lattice-dust healing system, it is better than a biological leg in almost every way.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    statBases = {
      Mass = 8,
    },
  },

  ["ThingDef:BionicSpine"] = {
    _ = {
      ParentName = "BodyPartBionicBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic.xml",
      DLC = "Core",
    },
    defName = "BionicSpine",
    label = "bionic spine",
    description = [[An advanced artificial spine. A biogel nerve bundle runs down an articulated plasteel core, surrounded by a lattice-dust healing system. It matches the performance of a biological spine.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    statBases = {
      Mass = 2,
    },
  },

  ["ThingDef:BionicHeart"] = {
    _ = {
      ParentName = "BodyPartBionicBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic.xml",
      DLC = "Core",
    },
    defName = "BionicHeart",
    label = "bionic heart",
    description = [[An advanced artificial heart. It has synthetic muscle fibers for a realistic heartbeat, plus a high-flow pump for rapid circulation during high stress. It is better than a biological heart in almost every way.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
  },

  ["ThingDef:BionicStomach"] = {
    _ = {
      ParentName = "BodyPartBionicBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic.xml",
      DLC = "Core",
    },
    defName = "BionicStomach",
    label = "bionic stomach",
    description = [[An advanced artificial stomach. A set of sensors and chemical synthesizers efficiently digest nearly any energy-bearing foodstuff. An integrated lattice-dust healing system automatically repairs any damage caused by the powerful acids. It is better than a biological stomach in almost every way.]],
    costList = {
      Plasteel = 10,
      ComponentSpacer = 3,
    },
    statBases = {
      Mass = 2,
    },
  },

  ["ThingDef:DeathAcidifier"] = {
    _ = {
      ParentName = "BodyPartBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic.xml",
      DLC = "Core",
    },
    defName = "DeathAcidifier",
    label = "death acidifier",
    description = [[A chest implant for preventing enemy use of captured equipment. Upon the user's death, it releases powerful chemicals that dissolve gear in contact with the user's body. It doesn't damage others.]],
    statBases = {
      MarketValue = 400,
    },
    thingCategories = {
      "BodyPartsBionic",
    },
  },

  ["ThingDef:Mote_AcidCloud"] = {
    _ = {
      ParentName = "MoteBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic.xml",
      DLC = "Core",
    },
    defName = "Mote_AcidCloud",
    altitudeLayer = "MoteOverhead",
  },

  ["ThingDef:BionicEar"] = {
    _ = {
      ParentName = "BodyPartBionicBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic.xml",
      DLC = "Core",
    },
    defName = "BionicEar",
    label = "bionic ear",
    description = [[An advanced artificial ear implant. A collection of invisible subdermal microphones capture sound and transmit it to a biogel nerve interface that links directly with the auditory nerve. It's sensitive enough to hear a cat before you see it, can't be damaged by loud noise, and automatically tunes itself to pick out meaningful sounds in noisy environments.]],
    costList = {
      Plasteel = 10,
      ComponentSpacer = 3,
    },
  },

  ["ThingDef:BodyPartNaturalBase"] = {
    _ = {
      Name = "BodyPartNaturalBase",
      ParentName = "BodyPartBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Natural.xml",
      DLC = "Core",
    },
    thingCategories = {
      "BodyPartsNatural",
    },
    statBases = {
      DeteriorationRate = 4.0,
    },
  },

  ["ThingDef:Heart"] = {
    _ = {
      ParentName = "BodyPartNaturalBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Natural.xml",
      DLC = "Core",
    },
    defName = "Heart",
    label = "heart",
    description = [[A biological human heart. Pumps blood around the body.]],
    statBases = {
      MarketValue = 500,
      Mass = 1,
    },
  },

  ["ThingDef:Lung"] = {
    _ = {
      ParentName = "BodyPartNaturalBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Natural.xml",
      DLC = "Core",
    },
    defName = "Lung",
    label = "lung",
    description = [[A biological human lung. A pair of these form the core of the human respiratory system.]],
    statBases = {
      MarketValue = 400,
      Mass = 1,
    },
  },

  ["ThingDef:Kidney"] = {
    _ = {
      ParentName = "BodyPartNaturalBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Natural.xml",
      DLC = "Core",
    },
    defName = "Kidney",
    label = "kidney",
    description = [[A biological human kidney. Filters and removes waste products from the blood.]],
    statBases = {
      MarketValue = 250,
      Mass = 1,
    },
  },

  ["ThingDef:Liver"] = {
    _ = {
      ParentName = "BodyPartNaturalBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Natural.xml",
      DLC = "Core",
    },
    defName = "Liver",
    label = "liver",
    description = [[A biological human liver. Plays an important role in metabolism.]],
    statBases = {
      MarketValue = 500,
      Mass = 2,
    },
  },

  ["ThingDef:BodyPartProstheticBase"] = {
    _ = {
      Name = "BodyPartProstheticBase",
      ParentName = "BodyPartBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic.xml",
      DLC = "Core",
    },
    thingCategories = {
      "BodyPartsProsthetic",
    },
    statBases = {
      WorkToMake = 15000,
    },
  },

  ["ThingDef:BodyPartProstheticMakeableBase"] = {
    _ = {
      Name = "BodyPartProstheticMakeableBase",
      ParentName = "BodyPartProstheticBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic.xml",
      DLC = "Core",
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Smith",
      recipeUsers = {
        "TableMachining",
      },
      skillRequirements = {
        Crafting = 5,
      },
      unfinishedThingDef = "UnfinishedHealthItemProsthetic",
      researchPrerequisite = "Prosthetics",
    },
  },

  ["ThingDef:SimpleProstheticLeg"] = {
    _ = {
      ParentName = "BodyPartProstheticMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic.xml",
      DLC = "Core",
    },
    defName = "SimpleProstheticLeg",
    label = "prosthetic leg",
    description = [[A leg prosthesis. While it lacks a neural interface, its complex arrangement of internal joints allows it to mimic natural movement quite convincingly. Still, it is inferior to a real leg.]],
    costList = {
      Steel = 40,
      ComponentIndustrial = 4,
    },
    statBases = {
      Mass = 8,
    },
  },

  ["ThingDef:SimpleProstheticArm"] = {
    _ = {
      ParentName = "BodyPartProstheticMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic.xml",
      DLC = "Core",
    },
    defName = "SimpleProstheticArm",
    label = "prosthetic arm",
    description = [[An arm prosthesis. While it lacks a neural interface, its complex arrangement of internal joints allows it to mimic natural movement quite convincingly. Still, it is inferior to a real arm.]],
    costList = {
      Steel = 40,
      ComponentIndustrial = 4,
    },
    statBases = {
      Mass = 5,
    },
  },

  ["ThingDef:SimpleProstheticHeart"] = {
    _ = {
      ParentName = "BodyPartProstheticMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic.xml",
      DLC = "Core",
    },
    defName = "SimpleProstheticHeart",
    label = "prosthetic heart",
    description = [[A heart prosthesis. It contains an electric motor that pumps blood smoothly around the body. Users often report feeling tired, but it's better than the alternative.]],
    costList = {
      Steel = 25,
      ComponentIndustrial = 4,
    },
    statBases = {
      Mass = 2,
    },
  },

  ["ThingDef:CochlearImplant"] = {
    _ = {
      ParentName = "BodyPartProstheticMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic.xml",
      DLC = "Core",
    },
    defName = "CochlearImplant",
    label = "cochlear implant",
    description = [[An implant which replaces normal hearing. An external microphone transmits a sound signal to electrodes wrapped around the inner ear's auditory sensing nerves. The electrodes stimulate the nerves according to the sound, creating a sensation of hearing. It's not as good as a natural ear, but it's a lot better than being deaf.]],
    costList = {
      Steel = 20,
      ComponentIndustrial = 4,
    },
  },

  ["ThingDef:PowerClaw"] = {
    _ = {
      ParentName = "BodyPartProstheticBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic.xml",
      DLC = "Core",
    },
    defName = "PowerClaw",
    label = "power claw",
    description = [[A combat-oriented hand replacement consisting of a mechanical hand with a hooked claw on each finger. It cuts deep, and it is strong enough to crush a skull like a hand crushes an egg. The claws can be retracted, making it as useful as a natural hand for non-combat tasks, however its overall ungainlyness slows down movement slightly.]],
    costList = {
      Steel = 40,
      ComponentIndustrial = 8,
    },
    statBases = {
      Mass = 4,
    },
  },

  ["ThingDef:Joywire"] = {
    _ = {
      ParentName = "BodyPartProstheticBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic.xml",
      DLC = "Core",
    },
    defName = "Joywire",
    label = "joywire",
    description = [[A brain implant that stimulates the brain's pleasure centers. While it dramatically improves a user's mood, the blanket of happiness makes it hard to concentrate on anything real. Joywires are illegal on many worlds, and are known for destroying whole cultures.]],
    costList = {
      Steel = 20,
      ComponentIndustrial = 4,
    },
  },

  ["ThingDef:Painstopper"] = {
    _ = {
      ParentName = "BodyPartProstheticBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic.xml",
      DLC = "Core",
    },
    defName = "Painstopper",
    label = "painstopper",
    description = [[A brain implant which inhibits nociception, or pain sensation. While it does allow the user to accomplish more, it turns out pain has a purpose. When you don't feel it, you can get hurt really bad really easily.]],
    costList = {
      Steel = 20,
      ComponentIndustrial = 4,
    },
  },

  ["ThingDef:AncientConcreteBarrier"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Ancient.xml",
      DLC = "Core",
    },
    defName = "AncientConcreteBarrier",
    label = "ancient concrete barrier",
    thingClass = "Building",
    category = "Building",
    description = [[A traffic management solution from long ago.]],
    altitudeLayer = "Building",
    pathCost = 42,
    pathCostIgnoreRepeat = true,
    passability = "PassThroughOnly",
    fillPercent = 0.5,
    statBases = {
      MaxHitPoints = 500,
      Beauty = -10,
      Flammability = 0,
      WorkToBuild = 600,
    },
    building = {
      isInert = true,
    },
    costList = {
      Steel = 15,
    },
  },

  ["ThingDef:AncientLamppost"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Ancient.xml",
      DLC = "Core",
    },
    defName = "AncientLamppost",
    label = "ancient lamppost",
    thingClass = "Building",
    category = "Building",
    description = [[Road lighting from long ago. No longer functional.]],
    statBases = {
      MaxHitPoints = 300,
      WorkToBuild = 400,
    },
    fillPercent = 0.25,
    passability = "PassThroughOnly",
    pathCost = 42,
    costList = {
      Steel = 15,
    },
    building = {
      isInert = true,
    },
  },

  ["ThingDef:Urn"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Ancient.xml",
      DLC = "Core",
    },
    defName = "Urn",
    label = "urn",
    description = [[An ancient-style decorative container.]],
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsFurniture",
    },
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.40,
    statBases = {
      MaxHitPoints = 40,
      WorkToBuild = 500,
      Mass = 5,
      Flammability = 1.0,
      Beauty = 5,
    },
    pathCost = 30,
    building = {
      isInert = true,
    },
  },

  ["ThingDef:SculptureBase"] = {
    _ = {
      ParentName = "BuildingBase",
      Name = "SculptureBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Art.xml",
      DLC = "Core",
    },
    thingClass = "Building_Art",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 50,
    useHitPoints = true,
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsArt",
    },
    statBases = {
      Flammability = 1.0,
      SellPriceFactor = 1.10,
      MeditationFocusStrength = 0.0,
    },
    comps = {
      {
        compClass = "CompQuality",
      },
      CompProperties_Art = {
        nameMaker = "NamerArtSculpture",
        descriptionMaker = "ArtDescription_Sculpture",
        canBeEnjoyedAsArt = true,
      },
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Artistic",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_Quality",
            },
            curve = {
              points = {
                {0, 0.12},
                {1, 0.16},
                {2, 0.20},
                {3, 0.22},
                {4, 0.24},
                {5, 0.26},
                {6, 0.28},
              },
            },
          },
          {
            _ = {
              Class = "FocusStrengthOffset_BuildingDefsWithQuality",
            },
            defs = {
              "SculptureSmall",
              "SculptureLarge",
              "SculptureGrand",
            },
            radius = 9.9,
            maxBuildings = 8,
            focusPerQuality = {
              points = {
                {0, 0.0},
                {1, 0.0},
                {2, 0.01},
                {3, 0.01},
                {4, 0.01},
                {5, 0.02},
                {6, 0.02},
              },
            },
            explanationKey = "MeditationFocusPerSculpture",
            explanationKeyAbstract = "MeditationFocusPerSculptureAbstract",
          },
        },
      },
    },
    tradeTags = {
      "Art",
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Artistic",
      unfinishedThingDef = "UnfinishedSculpture",
      effectWorking = "Sculpt",
      soundWorking = "Recipe_Sculpt",
      recipeUsers = {
        "TableSculpting",
      },
      defaultIngredientFilter = {
        categories = {
          "Root",
        },
        disallowedThingDefs = {
          "Gold",
          "Silver",
          "Plasteel",
          "Jade",
          "Uranium",
        },
      },
    },
  },

  ["ThingDef:SculptureSmall"] = {
    _ = {
      ParentName = "SculptureBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Art.xml",
      DLC = "Core",
    },
    defName = "SculptureSmall",
    label = "small sculpture",
    description = [[A torso-sized piece of material sculpted into an artistic form.]],
    fillPercent = 0.35,
    statBases = {
      MaxHitPoints = 90,
      Mass = 3,
      Beauty = 50,
      WorkToMake = 18000,
    },
  },

  ["ThingDef:SculptureLarge"] = {
    _ = {
      ParentName = "SculptureBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Art.xml",
      DLC = "Core",
    },
    defName = "SculptureLarge",
    label = "large sculpture",
    description = [[A person-sized piece of material sculpted into an artistic form.]],
    fillPercent = 0.5,
    statBases = {
      MaxHitPoints = 150,
      Mass = 7,
      Beauty = 100,
      WorkToMake = 30000,
    },
  },

  ["ThingDef:SculptureGrand"] = {
    _ = {
      ParentName = "SculptureBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Art.xml",
      DLC = "Core",
    },
    defName = "SculptureGrand",
    label = "grand sculpture",
    description = [[A huge sculpture sized to dominate a room.]],
    fillPercent = 0.5,
    size = {2, 2},
    statBases = {
      MaxHitPoints = 300,
      Beauty = 400,
      Mass = 28,
      WorkToMake = 105000,
    },
  },

  ["ThingDef:Snowman"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Art.xml",
      DLC = "Core",
    },
    defName = "Snowman",
    label = "snowman",
    description = [[A set of large snowballs piled and shaped to resemble a person. People make these for the fun of it.]],
    thingClass = "Building",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 30,
    pathCostIgnoreRepeat = false,
    useHitPoints = true,
    fillPercent = 0.35,
    statBases = {
      MaxHitPoints = 50,
      Beauty = 4,
      WorkToBuild = 1000,
      MarketValue = 0,
    },
    comps = {
      {
        compClass = "CompMelter",
      },
    },
    building = {
      repairable = false,
      isInert = true,
      artificialForMeditationPurposes = false,
    },
  },

  ["ThingDef:BuildingBase"] = {
    _ = {
      Name = "BuildingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Base.xml",
      DLC = "Core",
    },
    category = "Building",
    thingClass = "Building",
    terrainAffordanceNeeded = "Light",
    leaveResourcesWhenKilled = true,
    statBases = {
      SellPriceFactor = 0.70,
    },
  },

  ["ThingDef:CrashedShipPartBase"] = {
    _ = {
      Abstract = true,
      Name = "CrashedShipPartBase",
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Exotic.xml",
      DLC = "Core",
    },
    size = {6, 3},
    passability = "Impassable",
    fillPercent = 1,
    altitudeLayer = "Building",
    terrainAffordanceNeeded = "Light",
    leaveResourcesWhenKilled = false,
    statBases = {
      MaxHitPoints = 1200,
      Flammability = 0,
      Beauty = -200,
    },
    killedLeavings = {
      ChunkSlagSteel = 4,
      Steel = 60,
      ComponentIndustrial = 1,
      Plasteel = 10,
      ComponentSpacer = 1,
    },
    building = {
      combatPower = 250,
    },
    comps = {
      CompProperties_WakeUpDormant = {},
    },
  },

  ["ThingDef:PsychicDronerShipPart"] = {
    _ = {
      ParentName = "CrashedShipPartBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Exotic.xml",
      DLC = "Core",
    },
    defName = "PsychicDronerShipPart",
    label = "ship part (psychic droner)",
    description = [[An ancient ship part, torn off of a craft of unknown origin. It might be thousands of years old.\n\nThis one contains a psychic disturbance device. Using incomprehensible archotechnologies, it generates a psychic signal that drives people and animals mad within a wide radius around itself.]],
    comps = {
      CompProperties_CausesGameCondition_PsychicEmanation = {
        conditionDef = "PsychicDroner",
        compClass = "CompCauseGameCondition_PsychicEmanation",
        worldRange = 1,
        droneLevelIncreaseInterval = 150000,
        droneLevel = 2,
      },
      CompProperties_AnimalInsanityPulser = {},
    },
  },

  ["ThingDef:DefoliatorShipPart"] = {
    _ = {
      ParentName = "CrashedShipPartBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Exotic.xml",
      DLC = "Core",
    },
    defName = "DefoliatorShipPart",
    label = "ship part (defoliator)",
    description = [[An ancient ship part, torn off of a craft of unknown origin. It might be thousands of years old.\n\nThis one contains a device which annihilates plant life near itself without directly affecting flesh creatures. These kinds of weapons are sometimes scattered across farmlands or forests to remove the enemy's food supply and hiding places without permanently ruining the territory. They're usually associated with orbital-drop mechanoid armies.]],
    comps = {
      CompProperties_PlantHarmRadius = {
        radiusPerDayCurve = {
          points = {
            "0  , 5",
            "1.5, 18",
            "6  , 40",
            "20 , 100",
          },
        },
      },
    },
  },

  ["ThingDef:ShipChunk"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Exotic.xml",
      DLC = "Core",
    },
    defName = "ShipChunk",
    label = "ship chunk",
    description = [[A chunk of a spacecraft. Can be deconstructed to yield useful resources.]],
    category = "Building",
    altitudeLayer = "Building",
    pathCost = 42,
    passability = "PassThroughOnly",
    fillPercent = 0.50,
    size = {2, 2},
    statBases = {
      MaxHitPoints = 300,
      Flammability = 0,
      Beauty = -20,
      WorkToBuild = 12000,
    },
    leaveResourcesWhenKilled = false,
    killedLeavings = {
      ChunkSlagSteel = 2,
      ComponentIndustrial = 1,
    },
    costList = {
      ComponentIndustrial = 11,
      Steel = 40,
    },
    building = {
      alwaysDeconstructible = true,
    },
  },

  ["ThingDef:FurnitureBase"] = {
    _ = {
      Name = "FurnitureBase",
      ParentName = "BuildingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsFurniture",
    },
  },

  ["ThingDef:FurnitureWithQualityBase"] = {
    _ = {
      Name = "FurnitureWithQualityBase",
      ParentName = "FurnitureBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    comps = {
      {
        compClass = "CompQuality",
      },
    },
  },

  ["ThingDef:ArtableFurnitureBase"] = {
    _ = {
      Name = "ArtableFurnitureBase",
      ParentName = "FurnitureWithQualityBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    comps = {
      CompProperties_Art = {
        nameMaker = "NamerArtFurniture",
        descriptionMaker = "ArtDescription_Furniture",
        minQualityForArtistic = "Excellent",
      },
    },
  },

  ["ThingDef:ArtableFurnitureRegardlessOfQualityBase"] = {
    _ = {
      Name = "ArtableFurnitureRegardlessOfQualityBase",
      ParentName = "FurnitureWithQualityBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    comps = {
      CompProperties_Art = {
        nameMaker = "NamerArtFurniture",
        descriptionMaker = "ArtDescription_Furniture",
        minQualityForArtistic = "Awful",
      },
    },
  },

  ["ThingDef:SleepingSpot"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "SleepingSpot",
    label = "sleeping spot",
    description = [[Designates a spot on the ground where people should sleep. Not comfortable.]],
    thingClass = "Building_Bed",
    altitudeLayer = "FloorEmplacement",
    statBases = {
      WorkToBuild = 0,
      Comfort = 0.4,
      SurgerySuccessChanceFactor = 0.7,
    },
    useHitPoints = false,
    size = {1, 2},
    passability = "Standable",
    building = {
      sowTag = "SupportPlantsOnly",
      artificialForMeditationPurposes = false,
      buildingTags = {
        "Bed",
      },
    },
    comps = {
      CompProperties_AssignableToPawn = {
        drawAssignmentOverlay = false,
        compClass = "CompAssignableToPawn_Bed",
      },
    },
  },

  ["ThingDef:DoubleSleepingSpot"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "DoubleSleepingSpot",
    label = "double sleeping spot",
    description = [[Designates a spot on the ground where two people should sleep together. Not comfortable.]],
    thingClass = "Building_Bed",
    altitudeLayer = "FloorEmplacement",
    statBases = {
      WorkToBuild = 0,
      Comfort = 0.4,
      SurgerySuccessChanceFactor = 0.7,
    },
    useHitPoints = false,
    size = {2, 2},
    passability = "Standable",
    building = {
      sowTag = "SupportPlantsOnly",
      artificialForMeditationPurposes = false,
      buildingTags = {
        "Bed",
      },
    },
    comps = {
      CompProperties_AssignableToPawn = {
        drawAssignmentOverlay = false,
        compClass = "CompAssignableToPawn_Bed",
      },
    },
  },

  ["ThingDef:BedBase"] = {
    _ = {
      ParentName = "FurnitureBase",
      Name = "BedBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    thingClass = "Building_Bed",
    altitudeLayer = "Building",
    comps = {
      CompProperties_AssignableToPawn = {
        drawAssignmentOverlay = false,
        compClass = "CompAssignableToPawn_Bed",
      },
    },
    passability = "PassThroughOnly",
    building = {
      buildingTags = {
        "Bed",
      },
    },
  },

  ["ThingDef:BedWithQualityBase"] = {
    _ = {
      Name = "BedWithQualityBase",
      ParentName = "BedBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    comps = {
      {
        compClass = "CompQuality",
      },
    },
  },

  ["ThingDef:ArtableBedBase"] = {
    _ = {
      Name = "ArtableBedBase",
      ParentName = "BedWithQualityBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    comps = {
      CompProperties_Art = {
        nameMaker = "NamerArtFurniture",
        descriptionMaker = "ArtDescription_Furniture",
        minQualityForArtistic = "Excellent",
      },
    },
  },

  ["ThingDef:Bed"] = {
    _ = {
      ParentName = "BedWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "Bed",
    label = "bed",
    description = [[A cozy mattress and sheets on a frame for resting.]],
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "EndTable",
          "Dresser",
        },
      },
    },
    statBases = {
      MaxHitPoints = 140,
      Flammability = 1.0,
      Beauty = 1,
      WorkToBuild = 800,
      Mass = 30,
      BedRestEffectiveness = 1,
      Comfort = 0.75,
      ImmunityGainSpeedFactor = 1.07,
      SurgerySuccessChanceFactor = 1,
    },
    size = {1, 2},
    building = {
      bed_healPerDay = 4,
    },
    fillPercent = 0.4,
    pathCost = 42,
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:DoubleBed"] = {
    _ = {
      ParentName = "ArtableBedBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "DoubleBed",
    label = "double bed",
    description = [[A simple double-wide bed that fits two people.]],
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "EndTable",
          "Dresser",
        },
      },
    },
    statBases = {
      MaxHitPoints = 200,
      Flammability = 1.0,
      WorkToBuild = 1500,
      Mass = 50,
      Comfort = 0.75,
      Beauty = 2,
      BedRestEffectiveness = 1,
      ImmunityGainSpeedFactor = 1.07,
      SurgerySuccessChanceFactor = 1,
    },
    size = {2, 2},
    building = {
      bed_healPerDay = 4,
    },
    terrainAffordanceNeeded = "Light",
    fillPercent = 0.4,
    pathCost = 42,
    leaveResourcesWhenKilled = true,
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:RoyalBed"] = {
    _ = {
      ParentName = "ArtableBedBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "RoyalBed",
    label = "royal bed",
    description = [[A luxurious gold-inlaid bed fit for the highborn. Very comfy and beautiful, it is a work of art in itself. Fits two.]],
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "EndTable",
          "Dresser",
        },
      },
    },
    statBases = {
      MaxHitPoints = 200,
      Flammability = 1.0,
      WorkToBuild = 50000,
      Mass = 60,
      Beauty = 75,
      BedRestEffectiveness = 1.05,
      Comfort = 0.90,
      ImmunityGainSpeedFactor = 1.07,
      SurgerySuccessChanceFactor = 1,
    },
    size = {2, 2},
    costList = {
      Gold = 50,
    },
    building = {
      bed_healPerDay = 4,
    },
    terrainAffordanceNeeded = "Light",
    fillPercent = 0.4,
    pathCost = 42,
    leaveResourcesWhenKilled = true,
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:HospitalBed"] = {
    _ = {
      ParentName = "BedWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "HospitalBed",
    label = "hospital bed",
    description = [[A bed specially designed for use in hospitals. Adjustable for a patient and festooned with built-in equipment, it improves medical outcomes over normal beds.]],
    statBases = {
      MaxHitPoints = 150,
      WorkToBuild = 2800,
      Mass = 35,
      Flammability = 1.0,
      BedRestEffectiveness = 1,
      Comfort = 0.80,
      ImmunityGainSpeedFactor = 1.11,
      MedicalTendQualityOffset = 0.10,
      SurgerySuccessChanceFactor = 1.1,
    },
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "VitalsMonitor",
          "EndTable",
          "Dresser",
        },
      },
    },
    size = {1, 2},
    costList = {
      Steel = 80,
      ComponentIndustrial = 5,
    },
    building = {
      bed_healPerDay = 10,
      bed_defaultMedical = true,
      buildingSizeCategory = "Small",
    },
    fillPercent = 0.4,
    pathCost = 42,
    leaveResourcesWhenKilled = true,
    researchPrerequisites = {
      "HospitalBed",
    },
  },

  ["ThingDef:Bedroll"] = {
    _ = {
      ParentName = "BedWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "Bedroll",
    label = "bedroll",
    description = [[A simple bed that lays on the floor, usually made of cloth or leather, often lined with fur. It is lightweight and can be rolled up for easy transport, but it is not quite as comfortable as a typical bed. Caravans can use bedrolls while traveling for better sleep.]],
    statBases = {
      MaxHitPoints = 75,
      Flammability = 1.0,
      Mass = 2.5,
      BedRestEffectiveness = 0.95,
      ImmunityGainSpeedFactor = 1.05,
      Comfort = 0.68,
      WorkToBuild = 600,
    },
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "Dresser",
          "EndTable",
        },
      },
    },
    size = {1, 2},
    building = {
      bed_healPerDay = 4,
      bed_caravansCanUse = true,
    },
    pathCost = 14,
    passability = "Standable",
  },

  ["ThingDef:BedrollDouble"] = {
    _ = {
      ParentName = "BedWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "BedrollDouble",
    label = "double bedroll",
    description = [[A simple double-wide bed that lays on the floor, usually made of cloth or leather, often lined with fur. It is lightweight and can be rolled up for easy transport, but it is not quite as comfortable as a typical bed. Caravans can use bedrolls while traveling for better sleep.]],
    statBases = {
      Flammability = 1.0,
      Mass = 4.5,
      BedRestEffectiveness = 0.95,
      ImmunityGainSpeedFactor = 1.05,
      Comfort = 0.68,
      WorkToBuild = 1100,
    },
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "Dresser",
          "EndTable",
        },
      },
    },
    size = {2, 2},
    building = {
      bed_healPerDay = 4,
      bed_caravansCanUse = true,
    },
    pathCost = 14,
    passability = "Standable",
  },

  ["ThingDef:AnimalSleepingSpot"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "AnimalSleepingSpot",
    thingClass = "Building_Bed",
    label = "animal sleeping spot",
    description = [[Designates a spot on the ground where animals should sleep.]],
    size = {1, 1},
    passability = "Standable",
    useHitPoints = false,
    altitudeLayer = "FloorEmplacement",
    statBases = {
      WorkToBuild = 0,
      SurgerySuccessChanceFactor = 0.7,
    },
    building = {
      bed_humanlike = false,
      sowTag = "SupportPlantsOnly",
      artificialForMeditationPurposes = false,
    },
    comps = {
      CompProperties_AssignableToPawn = {
        drawAssignmentOverlay = false,
        compClass = "CompAssignableToPawn_Bed",
      },
    },
  },

  ["ThingDef:AnimalSleepingBox"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "AnimalSleepingBox",
    thingClass = "Building_Bed",
    label = "animal sleeping box",
    description = [[A small box for animals to sleep in. Fits smaller animals like chickens, cats, or small dogs.]],
    fillPercent = 0.15,
    pathCost = 14,
    passability = "PassThroughOnly",
    building = {
      bed_humanlike = false,
      bed_maxBodySize = 0.55,
      bed_healPerDay = 4,
    },
    altitudeLayer = "Building",
    statBases = {
      MaxHitPoints = 75,
      Flammability = 1.0,
      WorkToBuild = 180,
      Mass = 3,
      BedRestEffectiveness = 0.93,
      Comfort = 0.60,
      ImmunityGainSpeedFactor = 1.05,
      SurgerySuccessChanceFactor = 1,
    },
    comps = {
      CompProperties_AssignableToPawn = {
        drawAssignmentOverlay = false,
        compClass = "CompAssignableToPawn_Bed",
      },
    },
  },

  ["ThingDef:AnimalBed"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "AnimalBed",
    thingClass = "Building_Bed",
    label = "animal bed",
    description = [[A soft bed for animals to sleep on. Fits any animal.]],
    fillPercent = 0.15,
    pathCost = 14,
    passability = "PassThroughOnly",
    building = {
      bed_humanlike = false,
      bed_healPerDay = 4,
    },
    altitudeLayer = "Building",
    statBases = {
      MaxHitPoints = 140,
      Flammability = 1.0,
      WorkToBuild = 400,
      Mass = 5,
      BedRestEffectiveness = 1,
      Comfort = 0.75,
      ImmunityGainSpeedFactor = 1.07,
      SurgerySuccessChanceFactor = 1,
    },
    comps = {
      CompProperties_AssignableToPawn = {
        drawAssignmentOverlay = false,
        compClass = "CompAssignableToPawn_Bed",
      },
    },
  },

  ["ThingDef:Stool"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "Stool",
    label = "stool",
    description = [[A simple platform on which to sit. Not very comfortable, but much better than nothing. Can be used at tables, work stations, and elsewhere.]],
    altitudeLayer = "Building",
    statBases = {
      MaxHitPoints = 75,
      WorkToBuild = 450,
      Mass = 3,
      Flammability = 1.0,
      Beauty = 0,
      Comfort = 0.5,
    },
    pathCost = 30,
    fillPercent = 0.20,
    building = {
      isSittable = true,
    },
  },

  ["ThingDef:DiningChair"] = {
    _ = {
      ParentName = "ArtableFurnitureBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "DiningChair",
    label = "dining chair",
    description = [[A comfortable and attractive chair. Can be used at tables, work stations, and elsewhere.]],
    altitudeLayer = "Building",
    statBases = {
      MaxHitPoints = 100,
      WorkToBuild = 8000,
      Mass = 5,
      Flammability = 1.0,
      Beauty = 8,
      Comfort = 0.70,
    },
    pathCost = 30,
    fillPercent = 0.35,
    building = {
      isSittable = true,
    },
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:Armchair"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "Armchair",
    label = "armchair",
    description = [[A large, soft, comfy seat. Great for relaxation. Can be used at tables, work stations, and elsewhere.]],
    altitudeLayer = "Building",
    statBases = {
      MaxHitPoints = 120,
      WorkToBuild = 14000,
      Mass = 18,
      Flammability = 1.0,
      Beauty = 4,
      Comfort = 0.8,
    },
    researchPrerequisites = {
      "ComplexFurniture",
    },
    pathCost = 30,
    fillPercent = 0.40,
    building = {
      isSittable = true,
    },
  },

  ["ThingDef:TableBase"] = {
    _ = {
      Abstract = true,
      ParentName = "FurnitureWithQualityBase",
      Name = "TableBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    description = [[People eat off tables when chairs are placed facing them.]],
    thingClass = "Building",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 42,
    fillPercent = 0.4,
    leaveResourcesWhenKilled = true,
  },

  ["ThingDef:TableGatherSpotBase"] = {
    _ = {
      Abstract = true,
      ParentName = "TableBase",
      Name = "TableGatherSpotBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    comps = {
      {
        compClass = "CompGatherSpot",
      },
    },
  },

  ["ThingDef:EndTable"] = {
    _ = {
      ParentName = "TableBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "EndTable",
    label = "end table",
    description = [[A small bedside table which makes nearby beds a little bit more comfortable. Must be placed directly adjacent to the head of the bed. Placing more than one end table near the same bed has no effect.]],
    statBases = {
      MaxHitPoints = 75,
      WorkToBuild = 1000,
      Mass = 5,
      Flammability = 1.0,
      Beauty = 3,
    },
    pathCost = 30,
    researchPrerequisites = {
      "ComplexFurniture",
    },
    comps = {
      CompProperties_Facility = {
        statOffsets = {
          Comfort = 0.05,
        },
        maxSimultaneous = 1,
        mustBePlacedAdjacentCardinalToBedHead = true,
      },
    },
  },

  ["ThingDef:Table1x2c"] = {
    _ = {
      ParentName = "TableGatherSpotBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "Table1x2c",
    label = "table (1x2)",
    statBases = {
      MaxHitPoints = 75,
      WorkToBuild = 750,
      Mass = 5,
      Flammability = 1.0,
      Beauty = 0.5,
    },
    size = {1, 2},
  },

  ["ThingDef:Table2x2c"] = {
    _ = {
      ParentName = "TableGatherSpotBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "Table2x2c",
    label = "table (2x2)",
    statBases = {
      MaxHitPoints = 100,
      WorkToBuild = 1500,
      Mass = 10,
      Flammability = 1.0,
      Beauty = 1,
    },
    size = {2, 2},
  },

  ["ThingDef:Table2x4c"] = {
    _ = {
      ParentName = "TableGatherSpotBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "Table2x4c",
    label = "table (2x4)",
    statBases = {
      MaxHitPoints = 150,
      WorkToBuild = 3000,
      Mass = 20,
      Flammability = 1.0,
      Beauty = 2,
    },
    size = {2, 4},
    building = {
      buildingSizeCategory = "Medium",
    },
  },

  ["ThingDef:Table3x3c"] = {
    _ = {
      ParentName = "TableGatherSpotBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "Table3x3c",
    label = "table (3x3)",
    statBases = {
      MaxHitPoints = 175,
      WorkToBuild = 3300,
      Mass = 22,
      Flammability = 1.0,
      Beauty = 2,
    },
    size = {3, 3},
    building = {
      buildingSizeCategory = "Medium",
    },
  },

  ["ThingDef:PlantPot"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "PlantPot",
    label = "plant pot",
    description = [[Plant decorative flowers here to improve the mood of people nearby.]],
    thingClass = "Building_PlantGrower",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.20,
    statBases = {
      MaxHitPoints = 75,
      WorkToBuild = 250,
      Mass = 2,
      Flammability = 1.0,
    },
    comps = {
      CompProperties_Forbiddable = {},
    },
    leaveResourcesWhenKilled = false,
    building = {
      defaultPlantToGrow = "Plant_Daylily",
      sowTag = "Decorative",
    },
  },

  ["ThingDef:TorchLamp"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "TorchLamp",
    label = "torch lamp",
    description = [[A wooden torch for lighting an area. People need light to move and work at full speed. Can be automatically refueled with wood. Produces a small amount of heat.]],
    category = "Building",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 14,
    fillPercent = 0.15,
    statBases = {
      MaxHitPoints = 75,
      WorkToBuild = 100,
      Flammability = 0,
      MeditationFocusStrength = 0.0,
    },
    costList = {
      WoodLog = 20,
    },
    building = {
      artificialForMeditationPurposes = false,
    },
    leaveResourcesWhenKilled = false,
    comps = {
      CompProperties_Refuelable = {
        fuelConsumptionRate = 2.0,
        fuelCapacity = 20.0,
        fuelConsumptionPerTickInRain = 0.0006,
        fuelFilter = {
          thingDefs = {
            "WoodLog",
          },
        },
        initialFuelPercent = 1,
        showAllowAutoRefuelToggle = true,
      },
      CompProperties_Glower = {
        glowRadius = 10,
        glowColor = {252, 187, 113, 0},
      },
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 3.5,
        heatPushMaxTemperature = 23,
      },
      CompProperties_FireOverlay = {
        fireSize = 0.4,
        offset = {0, 0, 0.2},
      },
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Flame",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_Lit",
            },
            offset = 0.1,
          },
          {
            _ = {
              Class = "FocusStrengthOffset_BuildingDefsLit",
            },
            defs = {
              "Campfire",
              "TorchLamp",
              "Brazier",
            },
            offsetPerBuilding = 0.01,
            radius = 9.9,
            maxBuildings = 8,
            explanationKey = "MeditationFocusPerFlame",
            explanationKeyAbstract = "MeditationFocusPerFlameAbstract",
          },
        },
      },
    },
  },

  ["ThingDef:LampBase"] = {
    _ = {
      Abstract = true,
      Name = "LampBase",
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    thingClass = "Building",
    category = "Building",
    minifiedDef = "MinifiedThing",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.20,
    pathCost = 14,
    leaveResourcesWhenKilled = false,
    thingCategories = {
      "BuildingsFurniture",
    },
    comps = {
      CompProperties_Flickable = {},
    },
    statBases = {
      MaxHitPoints = 50,
      WorkToBuild = 300,
      Flammability = 1.0,
    },
    researchPrerequisites = {
      "Electricity",
    },
  },

  ["ThingDef:StandingLampBase"] = {
    _ = {
      Abstract = true,
      Name = "StandingLampBase",
      ParentName = "LampBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    costList = {
      Steel = 20,
    },
    statBases = {
      Mass = 4,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 30,
      },
    },
  },

  ["ThingDef:StandingLamp"] = {
    _ = {
      ParentName = "StandingLampBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "StandingLamp",
    label = "standing lamp",
    description = [[An electrical standing lamp that lights an area. People need light to move and work at full speed.]],
    comps = {
      CompProperties_Glower = {
        glowRadius = 12,
        glowColor = {217, 217, 208, 0},
      },
    },
  },

  ["ThingDef:StandingLamp_Red"] = {
    _ = {
      ParentName = "StandingLampBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "StandingLamp_Red",
    label = "standing lamp (red)",
    description = [[A standing lamp that lights an area in red.]],
    comps = {
      CompProperties_Glower = {
        glowRadius = 12,
        glowColor = {217, 80, 80, 0},
      },
    },
    researchPrerequisites = {
      _ = {
        Inherit = false,
      },
      "ColoredLights",
    },
  },

  ["ThingDef:StandingLamp_Green"] = {
    _ = {
      ParentName = "StandingLampBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "StandingLamp_Green",
    label = "standing lamp (green)",
    description = [[A standing lamp that lights an area in green.]],
    comps = {
      CompProperties_Glower = {
        glowRadius = 12,
        glowColor = {80, 217, 80, 0},
      },
    },
    researchPrerequisites = {
      _ = {
        Inherit = false,
      },
      "ColoredLights",
    },
  },

  ["ThingDef:StandingLamp_Blue"] = {
    _ = {
      ParentName = "StandingLampBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "StandingLamp_Blue",
    label = "standing lamp (blue)",
    description = [[A standing lamp that lights an area in blue.]],
    comps = {
      CompProperties_Glower = {
        glowRadius = 12,
        glowColor = {80, 80, 217, 0},
      },
    },
    researchPrerequisites = {
      _ = {
        Inherit = false,
      },
      "ColoredLights",
    },
  },

  ["ThingDef:SunLamp"] = {
    _ = {
      ParentName = "LampBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "SunLamp",
    label = "sun lamp",
    description = [[An industrial lamp which lights an area brightly enough to grow crops, but consumes a huge amount of power. Automatically turns itself off at night.]],
    thingClass = "Building_SunLamp",
    statBases = {
      WorkToBuild = 330,
      Mass = 4.5,
    },
    costList = {
      Steel = 40,
    },
    comps = {
      CompProperties_Glower = {
        overlightRadius = 7.0,
        glowRadius = 14,
        glowColor = {370, 370, 370, 0},
      },
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        shortCircuitInRain = true,
        basePowerConsumption = 2900,
      },
      CompProperties_Schedule = {
        startTime = 0.25,
        endTime = 0.8,
        offMessage = "Off for plant resting period",
      },
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 3,
      },
    },
  },

  ["ThingDef:Shelf"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "Shelf",
    label = "shelf",
    description = [[A shelf for storing miscellaneous items. Items stored in this will not affect room beauty and they won't deteriorate, even if outside.]],
    thingClass = "Building_Storage",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.4,
    pathCost = 50,
    statBases = {
      MaxHitPoints = 100,
      Mass = 8,
      WorkToBuild = 600,
      Flammability = 1.0,
      Beauty = 0.5,
    },
    size = {2, 1},
    building = {
      preventDeteriorationOnTop = true,
      ignoreStoredThingsBeauty = true,
      defaultStorageSettings = {
        priority = "Important",
        filter = {
          categories = {
            "Weapons",
          },
        },
      },
    },
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:Dresser"] = {
    _ = {
      ParentName = "ArtableFurnitureBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Core",
    },
    defName = "Dresser",
    label = "dresser",
    description = [[A dresser. Gives a small comfort bonus to all nearby beds. Placing more than one dresser near the same bed has no effect.]],
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.4,
    pathCost = 42,
    statBases = {
      MaxHitPoints = 120,
      Mass = 15,
      WorkToBuild = 2000,
      Flammability = 1.0,
      Beauty = 5,
    },
    size = {2, 1},
    researchPrerequisites = {
      "ComplexFurniture",
    },
    comps = {
      CompProperties_Facility = {
        statOffsets = {
          Comfort = 0.05,
        },
        maxSimultaneous = 1,
        maxDistance = 6,
      },
    },
  },

  ["ThingDef:HorseshoesPin"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Joy.xml",
      DLC = "Core",
    },
    defName = "HorseshoesPin",
    label = "horseshoes pin",
    description = [[A simple ancient game played with a horseshoes and a large pin in the ground. Players toss horseshoes to try to get them to land on the pin. It's relaxing, and trains shooting skills.]],
    minifiedDef = "MinifiedThing",
    altitudeLayer = "Building",
    thingCategories = {
      "BuildingsJoy",
    },
    statBases = {
      MaxHitPoints = 75,
      WorkToBuild = 100,
      Mass = 3,
      Flammability = 1.0,
      JoyGainFactor = 1,
    },
    building = {
      joyKind = "Gaming_Dexterity",
      artificialForMeditationPurposes = false,
    },
    pathCost = 14,
  },

  ["ThingDef:HoopstoneRing"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Joy.xml",
      DLC = "Core",
    },
    defName = "HoopstoneRing",
    label = "hoopstone ring",
    description = [[A simple ancient game played with stones and a large ring in the ground. Players try to toss stones through the ring from a distance. It's relaxing, and trains shooting skills.]],
    minifiedDef = "MinifiedThing",
    altitudeLayer = "Building",
    thingCategories = {
      "BuildingsJoy",
    },
    statBases = {
      MaxHitPoints = 100,
      WorkToBuild = 100,
      Mass = 4,
      Flammability = 1.0,
      JoyGainFactor = 1,
    },
    building = {
      joyKind = "Gaming_Dexterity",
      artificialForMeditationPurposes = false,
    },
    pathCost = 14,
  },

  ["ThingDef:GameOfUrBoard"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Joy.xml",
      DLC = "Core",
    },
    defName = "GameOfUrBoard",
    label = "Game-of-Ur board",
    description = [[Dating from 2500BC, this exciting yet infuriating board game can be played by one or two people. It trains intellectual skills.]],
    altitudeLayer = "Building",
    fillPercent = 0.20,
    building = {
      joyKind = "Gaming_Cerebral",
    },
    statBases = {
      MaxHitPoints = 90,
      WorkToBuild = 6000,
      Mass = 2,
      Flammability = 1.0,
      Beauty = 2,
      JoyGainFactor = 0.8,
    },
    pathCost = 14,
    passability = "PassThroughOnly",
  },

  ["ThingDef:ChessTable"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Joy.xml",
      DLC = "Core",
    },
    defName = "ChessTable",
    label = "chess table",
    description = [[The ancient game of kings. Fun for a few hours here and there, even playing alone. It trains intellectual skills.]],
    altitudeLayer = "Building",
    fillPercent = 0.40,
    building = {
      joyKind = "Gaming_Cerebral",
    },
    researchPrerequisites = {
      "ComplexFurniture",
    },
    statBases = {
      MaxHitPoints = 100,
      WorkToBuild = 8000,
      Mass = 5,
      Flammability = 1.0,
      Beauty = 4,
      JoyGainFactor = 1,
    },
    pathCost = 30,
    passability = "PassThroughOnly",
  },

  ["ThingDef:PokerTable"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Joy.xml",
      DLC = "Core",
    },
    defName = "PokerTable",
    label = "poker table",
    description = [[A table designed for playing gambling card games like poker. A great way to test your strategic skills and a bit of luck.]],
    altitudeLayer = "Building",
    fillPercent = 0.40,
    building = {
      joyKind = "Gaming_Cerebral",
      buildingSizeCategory = "Medium",
    },
    statBases = {
      MaxHitPoints = 250,
      WorkToBuild = 10000,
      Mass = 30,
      Flammability = 1.0,
      Beauty = 0,
      JoyGainFactor = 1.3,
    },
    size = {2, 2},
    costList = {
      Cloth = 50,
      WoodLog = 25,
    },
    pathCost = 42,
    passability = "PassThroughOnly",
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:BilliardsTable"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Joy.xml",
      DLC = "Core",
    },
    defName = "BilliardsTable",
    label = "billiards table",
    description = [[A soft-topped bounded table for playing a variety of billiards-type games. It trains shooting ability.]],
    altitudeLayer = "Building",
    fillPercent = 0.40,
    terrainAffordanceNeeded = "Medium",
    building = {
      joyKind = "Gaming_Dexterity",
      buildingSizeCategory = "Medium",
    },
    statBases = {
      MaxHitPoints = 250,
      WorkToBuild = 12000,
      Mass = 60,
      Flammability = 1.0,
      Beauty = 0,
      JoyGainFactor = 1.3,
    },
    size = {2, 3},
    costList = {
      Cloth = 80,
      WoodLog = 30,
    },
    pathCost = 42,
    passability = "PassThroughOnly",
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:TubeTelevision"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Joy.xml",
      DLC = "Core",
    },
    defName = "TubeTelevision",
    label = "tube television",
    description = [[A cathode ray tube display for showing moving pictures with sound. Even on the rimworlds, there is often an old transmitter running something at least marginally interesting.]],
    altitudeLayer = "Building",
    minifiedDef = "MinifiedThing",
    fillPercent = 0.40,
    thingCategories = {
      "BuildingsJoy",
    },
    statBases = {
      WorkToBuild = 10000,
      MaxHitPoints = 100,
      Mass = 14,
      Flammability = 1.0,
      JoyGainFactor = 1.2,
    },
    costList = {
      Steel = 80,
      ComponentIndustrial = 4,
    },
    pathCost = 42,
    passability = "PassThroughOnly",
    building = {
      joyKind = "Television",
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        shortCircuitInRain = true,
        basePowerConsumption = 200,
      },
      CompProperties_Flickable = {},
    },
    tradeTags = {
      "Television",
    },
    researchPrerequisites = {
      "TubeTelevision",
    },
  },

  ["ThingDef:FlatscreenTelevision"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Joy.xml",
      DLC = "Core",
    },
    defName = "FlatscreenTelevision",
    label = "flatscreen television",
    description = [[A high-tech flat-screen television with crystal-clear image and rich color. Picks up transmissions from ancient satellites and ubiquitous data cards.]],
    altitudeLayer = "Building",
    minifiedDef = "MinifiedThing",
    fillPercent = 0.35,
    thingCategories = {
      "BuildingsJoy",
    },
    costList = {
      Steel = 140,
      ComponentIndustrial = 16,
    },
    statBases = {
      WorkToBuild = 40000,
      MaxHitPoints = 80,
      Flammability = 1.0,
      Mass = 8,
      JoyGainFactor = 1.4,
    },
    pathCost = 50,
    passability = "PassThroughOnly",
    size = {2, 1},
    researchPrerequisites = {
      "FlatscreenTelevision",
    },
    building = {
      joyKind = "Television",
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        shortCircuitInRain = true,
        basePowerConsumption = 330,
      },
      CompProperties_Flickable = {},
    },
    tradeTags = {
      "Television",
    },
  },

  ["ThingDef:MegascreenTelevision"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Joy.xml",
      DLC = "Core",
    },
    defName = "MegascreenTelevision",
    label = "megascreen television",
    description = [[A huge, high-tech television. Gigantic, hyper-vibrant images almost leap out of the screen. Very entertaining. Picks up transmissions from ancient satellites and ubiquitous data cards.]],
    altitudeLayer = "Building",
    minifiedDef = "MinifiedThing",
    fillPercent = 0.35,
    thingCategories = {
      "BuildingsJoy",
    },
    costList = {
      Steel = 260,
      ComponentIndustrial = 22,
    },
    statBases = {
      WorkToBuild = 80000,
      MaxHitPoints = 85,
      Flammability = 1.0,
      Mass = 10,
      JoyGainFactor = 1.6,
    },
    pathCost = 50,
    passability = "PassThroughOnly",
    size = {3, 1},
    building = {
      joyKind = "Television",
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        shortCircuitInRain = true,
        basePowerConsumption = 450,
      },
      CompProperties_Flickable = {},
    },
    tradeTags = {
      "Television",
    },
  },

  ["ThingDef:Telescope"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Joy.xml",
      DLC = "Core",
    },
    defName = "Telescope",
    label = "telescope",
    description = [[A telescope for doing amateur astronomy. It's a relaxing hobby for a certain kind of person. Can only be used outdoors.]],
    fillPercent = 0.15,
    altitudeLayer = "Building",
    hasInteractionCell = true,
    passability = "PassThroughOnly",
    pathCost = 30,
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsJoy",
    },
    building = {
      joyKind = "Telescope",
    },
    costList = {
      Steel = 50,
      ComponentIndustrial = 1,
    },
    statBases = {
      MaxHitPoints = 75,
      Flammability = 1.0,
      MarketValue = 350,
      Mass = 7.5,
      JoyGainFactor = 1.2,
    },
  },

  ["ThingDef:OrbitalTradeBeacon"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "OrbitalTradeBeacon",
    label = "orbital trade beacon",
    thingClass = "Building_OrbitalTradeBeacon",
    altitudeLayer = "Building",
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsMisc",
    },
    statBases = {
      MaxHitPoints = 75,
      WorkToBuild = 800,
      Flammability = 0.5,
      Mass = 5,
    },
    description = [[Required for orbital trading. You can only sell goods to orbital traders if they're near an orbital trade beacon. Can be placed indoors.]],
    fillPercent = 0.15,
    costList = {
      Steel = 40,
      ComponentIndustrial = 1,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 40,
      },
      CompProperties_Flickable = {},
      CompProperties_Breakdownable = {},
    },
    leaveResourcesWhenKilled = false,
    pathCost = 14,
    researchPrerequisites = {
      "MicroelectronicsBasics",
    },
  },

  ["ThingDef:CommsConsole"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "CommsConsole",
    label = "comms console",
    description = [[Allows radio contact with other factions and orbital traders.]],
    thingClass = "Building_CommsConsole",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 0.5,
    statBases = {
      MaxHitPoints = 250,
      WorkToBuild = 2200,
      Flammability = 0.6,
    },
    size = {3, 2},
    costList = {
      Steel = 120,
      ComponentIndustrial = 4,
    },
    hasInteractionCell = true,
    terrainAffordanceNeeded = "Medium",
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        shortCircuitInRain = true,
        basePowerConsumption = 200,
      },
      CompProperties_Flickable = {},
      CompProperties_Breakdownable = {},
    },
    researchPrerequisites = {
      "MicroelectronicsBasics",
    },
  },

  ["ThingDef:FirefoamPopper"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "FirefoamPopper",
    label = "firefoam popper",
    description = [[When it detects fire, this safety device pops and sprays a fire-retardant foam in a circular field around itself. Can also be triggered manually.]],
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 9.9,
        explosiveDamageType = "Extinguish",
        startWickHitPointsPercent = -1,
        startWickOnDamageTaken = {
          "Flame",
        },
        postExplosionSpawnThingDef = "Filth_FireFoam",
        postExplosionSpawnChance = 1,
        postExplosionSpawnThingCount = 1,
        applyDamageToExplosionCellsNeighbors = true,
        explosionEffect = "ExtinguisherExplosion",
      },
      CompProperties_Usable = {
        useJob = "TriggerFirefoamPopper",
        useLabel = "Trigger firefoam popper",
      },
      CompProperties_UseEffect = {
        compClass = "CompUseEffect_StartWick",
      },
      CompProperties_ProximityFuse = {
        target = "Fire",
        radius = 3,
      },
    },
    altitudeLayer = "Building",
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsMisc",
    },
    statBases = {
      MaxHitPoints = 50,
      WorkToBuild = 1500,
      Mass = 10,
      Flammability = 1.0,
      Beauty = -8,
    },
    fillPercent = 0.30,
    costList = {
      Steel = 75,
      ComponentIndustrial = 1,
    },
    leaveResourcesWhenKilled = false,
    pathCost = 30,
    passability = "PassThroughOnly",
    researchPrerequisites = {
      "Firefoam",
    },
  },

  ["ThingDef:MoisturePump"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "MoisturePump",
    label = "moisture pump",
    description = [[Very slowly equalizes moisture in nearby terrain, converting marshes or shallow water into dry ground, and soft sand into normal sand. Does not affect deep water.]],
    comps = {
      CompProperties_Forbiddable = {},
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 150,
      },
      CompProperties_TerrainPumpDry = {
        soundWorking = "MoisturePump_Ambience",
        radius = 6.9,
        daysToRadius = 60,
      },
    },
    altitudeLayer = "Building",
    statBases = {
      MaxHitPoints = 50,
      WorkToBuild = 1500,
      Flammability = 1.0,
      Beauty = -8,
    },
    fillPercent = 0.15,
    costList = {
      Steel = 75,
      ComponentIndustrial = 4,
    },
    pathCost = 30,
    passability = "PassThroughOnly",
    researchPrerequisites = {
      "MoisturePump",
    },
  },

  ["ThingDef:GroundPenetratingScanner"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "GroundPenetratingScanner",
    label = "ground-penetrating scanner",
    description = [[A sensor unit used by researchers to search for buried resources. The chance to find a resource depends on the operator's research ability. It consumes a lot of electricity. If you find a buried resource, you'll need to use deep drills to extract it. It doesn't work under a roof.]],
    costList = {
      Steel = 150,
      ComponentIndustrial = 4,
      ComponentSpacer = 1,
    },
    comps = {
      CompProperties_Forbiddable = {},
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 700,
      },
      CompProperties_Breakdownable = {},
      CompProperties_Flickable = {},
      CompProperties_ScannerMineralsDeep = {
        scanSpeedStat = "ResearchSpeed",
        scanFindMtbDays = 3,
        scanFindGuaranteedDays = 6,
        soundWorking = "ScannerGroundPenetrating_Ambience",
      },
    },
    altitudeLayer = "Building",
    statBases = {
      MaxHitPoints = 200,
      WorkToBuild = 12000,
      Flammability = 0.5,
      Beauty = -8,
    },
    hasInteractionCell = true,
    fillPercent = 0.40,
    leaveResourcesWhenKilled = false,
    passability = "PassThroughOnly",
    pathCost = 50,
    size = {3, 3},
    terrainAffordanceNeeded = "Heavy",
    researchPrerequisites = {
      "GroundPenetratingScanner",
    },
  },

  ["ThingDef:LongRangeMineralScanner"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "LongRangeMineralScanner",
    label = "long-range mineral scanner",
    description = [[A lateral sensor unit used by researchers to detect a specific type of mineral across the planet. The chance to find a resource depends on the operator's research ability. This sensor can be tuned to target a specific resource type. It consumes a lot of electricity. If you find a resource, you'll need to travel to collect it.]],
    costList = {
      Steel = 200,
      ComponentIndustrial = 6,
      ComponentSpacer = 2,
    },
    comps = {
      CompProperties_Forbiddable = {},
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 700,
      },
      CompProperties_Breakdownable = {},
      CompProperties_Flickable = {},
      CompProperties_LongRangeMineralScanner = {
        scanSpeedStat = "ResearchSpeed",
        scanFindMtbDays = 4,
        scanFindGuaranteedDays = 8,
        soundWorking = "ScannerLongRangeMineral_Ambience",
      },
    },
    altitudeLayer = "Building",
    statBases = {
      MaxHitPoints = 250,
      WorkToBuild = 1000,
      Flammability = 0.5,
      Beauty = -8,
    },
    fillPercent = 0.40,
    leaveResourcesWhenKilled = false,
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    size = {3, 3},
    terrainAffordanceNeeded = "Heavy",
    researchPrerequisites = {
      "LongRangeMineralScanner",
    },
  },

  ["ThingDef:PodLauncher"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "PodLauncher",
    label = "pod launcher",
    description = [[A fueling port for launching one transport pod. Pod launchers can launch as a group - but the launchers must be placed adjacent to each other.]],
    size = {1, 2},
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1.0,
    terrainAffordanceNeeded = "Medium",
    statBases = {
      MaxHitPoints = 200,
      WorkToBuild = 3000,
      Flammability = 0.5,
    },
    costList = {
      Steel = 50,
      ComponentIndustrial = 1,
    },
    comps = {
      CompProperties_Refuelable = {
        fuelCapacity = 150.0,
        targetFuelLevelConfigurable = true,
        initialConfigurableTargetFuelLevel = 75,
        fuelFilter = {
          thingDefs = {
            "Chemfuel",
          },
        },
        consumeFuelOnlyWhenUsed = true,
        autoRefuelPercent = 1,
        showFuelGizmo = true,
        drawOutOfFuelOverlay = false,
        drawFuelGaugeInMap = true,
        showAllowAutoRefuelToggle = true,
      },
    },
    researchPrerequisites = {
      "TransportPod",
    },
  },

  ["ThingDef:TransportPod"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "TransportPod",
    label = "transport pod",
    description = [[A launchable sub-orbital cargo pod capable of carrying people, items, or animals. Can be used for sending gifts, transporting people or supplies, surprise attacks, or reinforcing battles.]],
    size = {1, 1},
    altitudeLayer = "BuildingOnTop",
    passability = "PassThroughOnly",
    fillPercent = 0.5,
    terrainAffordanceNeeded = "Medium",
    statBases = {
      MaxHitPoints = 250,
      WorkToBuild = 1600,
      Flammability = 0.5,
    },
    costList = {
      Steel = 60,
      ComponentIndustrial = 1,
    },
    comps = {
      CompProperties_Transporter = {
        restEffectiveness = 0.8,
      },
      CompProperties_Launchable = {
        skyfallerLeaving = "DropPodLeaving",
      },
    },
    researchPrerequisites = {
      "TransportPod",
    },
  },

  ["ThingDef:MultiAnalyzer"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "MultiAnalyzer",
    label = "multi-analyzer",
    description = [[Increases research speed when placed near hi-tech research bench and unlocks new research projects. Each research bench can only use one multi-analyzer.]],
    researchPrerequisites = {
      "MultiAnalyzer",
    },
    size = {2, 2},
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.5,
    minifiedDef = "MinifiedThing",
    terrainAffordanceNeeded = "Medium",
    thingCategories = {
      "BuildingsMisc",
    },
    statBases = {
      MaxHitPoints = 200,
      WorkToBuild = 10000,
      Mass = 60,
      Flammability = 1.0,
    },
    costList = {
      Steel = 40,
      Plasteel = 50,
      Gold = 20,
      ComponentIndustrial = 8,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        shortCircuitInRain = true,
        basePowerConsumption = 200,
      },
      CompProperties_Flickable = {},
      CompProperties_Facility = {
        statOffsets = {
          ResearchSpeedFactor = 0.1,
        },
        maxSimultaneous = 1,
      },
    },
  },

  ["ThingDef:VitalsMonitor"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "VitalsMonitor",
    label = "vitals monitor",
    description = [[Increases medical tend quality, surgery success chance, and immunity gain speed when placed directly adjacent to a hospital bed. Only works for hospital beds - normal beds will not benefit. Attaching more than one vitals monitor to the same bed will have no effect.]],
    researchPrerequisites = {
      "VitalsMonitor",
    },
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.2,
    statBases = {
      MaxHitPoints = 100,
      WorkToBuild = 6000,
      Mass = 20,
      Flammability = 0.7,
    },
    size = {1, 1},
    costList = {
      Steel = 50,
      ComponentIndustrial = 3,
    },
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsMisc",
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        shortCircuitInRain = true,
        basePowerConsumption = 80,
      },
      CompProperties_Flickable = {},
      CompProperties_Facility = {
        statOffsets = {
          MedicalTendQualityOffset = 0.07,
          ImmunityGainSpeedFactor = 0.02,
          SurgerySuccessChanceFactor = 0.05,
        },
        maxSimultaneous = 1,
        mustBePlacedAdjacent = true,
      },
    },
  },

  ["ThingDef:ToolCabinet"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "ToolCabinet",
    label = "tool cabinet",
    description = [[Increases work speed when placed near a workbench. One workbench use to up to two tool cabinets.]],
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.5,
    pathCost = 42,
    statBases = {
      MaxHitPoints = 100,
      WorkToBuild = 1800,
      Mass = 20,
      Flammability = 0.5,
    },
    size = {2, 1},
    costList = {
      Steel = 200,
    },
    researchPrerequisites = {
      "ComplexFurniture",
    },
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsMisc",
    },
    comps = {
      CompProperties_Facility = {
        statOffsets = {
          WorkTableWorkSpeedFactor = 0.06,
        },
        maxSimultaneous = 2,
      },
    },
  },

  ["ThingDef:Grave"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "Grave",
    label = "grave",
    description = [[A decent final resting place. Colonists will visit full graves to gain meditative joy.]],
    thingClass = "Building_Grave",
    altitudeLayer = "FloorEmplacement",
    useHitPoints = false,
    size = {1, 2},
    statBases = {
      WorkToBuild = 800,
      MeditationFocusStrength = 0.06,
    },
    passability = "Standable",
    building = {
      isInert = true,
      preventDeteriorationInside = true,
      artificialForMeditationPurposes = false,
      fixedStorageSettings = {
        filter = {
          categories = {
            "Corpses",
          },
        },
      },
      defaultStorageSettings = {
        priority = "Important",
        filter = {
          categories = {
            "CorpsesHumanlike",
          },
        },
      },
    },
    terrainAffordanceNeeded = "Diggable",
    comps = {
      CompProperties_AssignableToPawn = {
        drawAssignmentOverlay = false,
        compClass = "CompAssignableToPawn_Grave",
      },
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Morbid",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_GraveFull",
            },
            offset = 0.10,
          },
          {
            _ = {
              Class = "FocusStrengthOffset_GraveCorpseRelationship",
            },
            offset = 0.10,
          },
          {
            _ = {
              Class = "FocusStrengthOffset_NearbyGraves",
            },
            defs = {
              "Grave",
              "Sarcophagus",
            },
            offsetPerBuilding = 0.01,
            radius = 9.9,
            maxBuildings = 4,
            focusPerFullGrave = 0.01,
            explanationKey = "MeditationFocusPerGrave",
            explanationKeyAbstract = "MeditationFocusPerGraveAbstract",
          },
        },
      },
    },
  },

  ["ThingDef:Sarcophagus"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "Sarcophagus",
    label = "sarcophagus",
    description = [[An ornamented burial receptacle for the honored dead.]],
    thingClass = "Building_Sarcophagus",
    size = {1, 2},
    pathCost = 42,
    fillPercent = 0.5,
    building = {
      preventDeteriorationInside = true,
      fixedStorageSettings = {
        filter = {
          categories = {
            "Corpses",
          },
        },
      },
      defaultStorageSettings = {
        priority = "Important",
        filter = {
          categories = {
            "CorpsesHumanlike",
          },
          specialFiltersToDisallow = {
            "AllowCorpsesStranger",
          },
        },
      },
    },
    statBases = {
      WorkToBuild = 2400,
      MaxHitPoints = 250,
      Flammability = 1.0,
      MeditationFocusStrength = 0.10,
      Beauty = 0,
    },
    comps = {
      {
        compClass = "CompQuality",
      },
      CompProperties_Art = {
        nameMaker = "NamerArtSarcophagusPlate",
        descriptionMaker = "ArtDescription_SarcophagusPlate",
        mustBeFullGrave = true,
      },
      CompProperties_AssignableToPawn = {
        drawAssignmentOverlay = false,
        compClass = "CompAssignableToPawn_Grave",
      },
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Morbid",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_GraveFull",
            },
            offset = 0.10,
          },
          {
            _ = {
              Class = "FocusStrengthOffset_GraveCorpseRelationship",
            },
            offset = 0.10,
          },
          {
            _ = {
              Class = "FocusStrengthOffset_NearbyGraves",
            },
            defs = {
              "Grave",
              "Sarcophagus",
            },
            offsetPerBuilding = 0.01,
            radius = 9.9,
            maxBuildings = 4,
            focusPerFullGrave = 0.01,
            explanationKey = "MeditationFocusPerGrave",
            explanationKeyAbstract = "MeditationFocusPerGraveAbstract",
          },
        },
      },
    },
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    terrainAffordanceNeeded = "Light",
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:CryptosleepCasket"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "CryptosleepCasket",
    label = "cryptosleep casket",
    description = [[A self-powered sarcophagus designed to keep a person in a state of suspended animation for many years.]],
    thingClass = "Building_CryptosleepCasket",
    researchPrerequisites = {
      "Cryptosleep",
    },
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 42,
    fillPercent = 0.5,
    statBases = {
      WorkToBuild = 3200,
      MaxHitPoints = 250,
      Flammability = 0.5,
    },
    size = {1, 2},
    hasInteractionCell = true,
    costList = {
      Steel = 180,
      Uranium = 5,
      ComponentIndustrial = 4,
      ComponentSpacer = 1,
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 2.66,
        explosiveDamageType = "Flame",
      },
      CompProperties_EmptyStateGraphic = {
        graphicData = {
          texPath = "Things/Building/Ship/ShipCryptosleepCasketOpenDoor",
          graphicClass = "Graphic_Multi",
          drawSize = {1, 2},
        },
      },
    },
    terrainAffordanceNeeded = "Medium",
  },

  ["ThingDef:AncientCryptosleepCasket"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "AncientCryptosleepCasket",
    label = "ancient cryptosleep casket",
    description = [[This cryptosleep casket looks like it has been here for a very long time. Who knows what it might contain?]],
    thingClass = "Building_AncientCryptosleepCasket",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 42,
    fillPercent = 0.5,
    statBases = {
      MaxHitPoints = 250,
      Flammability = 1.0,
    },
    size = {1, 2},
    hasInteractionCell = true,
    costList = {
      Steel = 180,
      Uranium = 5,
    },
    killedLeavings = {
      ChunkSlagSteel = 1,
      Steel = 25,
      Uranium = 3,
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 2.66,
        explosiveDamageType = "Flame",
      },
      CompProperties_EmptyStateGraphic = {
        graphicData = {
          texPath = "Things/Building/Ship/ShipCryptosleepCasketOpenDoor",
          graphicClass = "Graphic_Multi",
          drawSize = {1, 2},
        },
      },
    },
    leaveResourcesWhenKilled = false,
    terrainAffordanceNeeded = "Medium",
  },

  ["ThingDef:MarriageSpot"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "MarriageSpot",
    label = "marriage spot",
    description = [[Designates a spot where marriage ceremonies will take place. Spectators can watch from either side.]],
    thingClass = "Building_MarriageSpot",
    altitudeLayer = "FloorEmplacement",
    statBases = {
      WorkToBuild = 0,
    },
    useHitPoints = false,
    size = {2, 1},
    passability = "Standable",
    building = {
      sowTag = "SupportPlantsOnly",
      artificialForMeditationPurposes = false,
    },
  },

  ["ThingDef:PartySpot"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "PartySpot",
    label = "party spot",
    description = [[Designates a spot for throwing parties.]],
    altitudeLayer = "FloorEmplacement",
    statBases = {
      WorkToBuild = 0,
    },
    useHitPoints = false,
    passability = "Standable",
    building = {
      sowTag = "SupportPlantsOnly",
      artificialForMeditationPurposes = false,
    },
  },

  ["ThingDef:CaravanPackingSpot"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "CaravanPackingSpot",
    label = "caravan packing spot",
    description = [[Designates a spot for forming caravans. Put this near your stockpiles to speed up the caravan loading process.]],
    altitudeLayer = "FloorEmplacement",
    statBases = {
      WorkToBuild = 0,
    },
    useHitPoints = false,
    passability = "Standable",
    building = {
      sowTag = "SupportPlantsOnly",
      artificialForMeditationPurposes = false,
    },
  },

  ["ThingDef:SteleBase"] = {
    _ = {
      Name = "SteleBase",
      ParentName = "BuildingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.50,
    pathCost = 50,
    researchPrerequisites = {
      "ComplexFurniture",
    },
    comps = {
      CompProperties_Art = {
        nameMaker = "NamerArtFurniture",
        descriptionMaker = "ArtDescription_Furniture",
        minQualityForArtistic = "Awful",
      },
    },
  },

  ["ThingDef:SteleLarge"] = {
    _ = {
      ParentName = "SteleBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "SteleLarge",
    label = "large stele",
    description = [[A tall, thick slab with engravings on the sides. Steles have been used since ancient times to memorialize individuals, battles, and other important events.]],
    size = {2, 2},
    statBases = {
      MaxHitPoints = 200,
      WorkToBuild = 8000,
      Beauty = 15,
      MeditationFocusStrength = 0.15,
    },
    terrainAffordanceNeeded = "Medium",
    comps = {
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Artistic",
        },
      },
    },
  },

  ["ThingDef:SteleGrand"] = {
    _ = {
      ParentName = "SteleBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Core",
    },
    defName = "SteleGrand",
    label = "grand stele",
    description = [[A towering slab with extensive engravings on the sides. Steles have been used since ancient times to memorialize individuals, battles, and other important events.]],
    size = {3, 3},
    statBases = {
      MaxHitPoints = 400,
      WorkToBuild = 16000,
      Beauty = 30,
      MeditationFocusStrength = 0.18,
    },
    terrainAffordanceNeeded = "Heavy",
    comps = {
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Artistic",
        },
      },
    },
  },

  ["ThingDef:BuildingNaturalBase"] = {
    _ = {
      Name = "BuildingNaturalBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    category = "Building",
    building = {
      artificialForMeditationPurposes = false,
    },
  },

  ["ThingDef:RockBase"] = {
    _ = {
      Name = "RockBase",
      ParentName = "BuildingNaturalBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    thingClass = "Mineable",
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    statBases = {
      Flammability = 0,
    },
    building = {
      isInert = true,
      isNaturalRock = true,
      deconstructible = false,
    },
  },

  ["ThingDef:CollapsedRocks"] = {
    _ = {
      ParentName = "RockBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "CollapsedRocks",
    label = "collapsed rocks",
    description = [[Collapsed rocks, packed tightly enough to hold up a roof.]],
    statBases = {
      MaxHitPoints = 500,
    },
    building = {
      isNaturalRock = false,
    },
  },

  ["ThingDef:MineableSteel"] = {
    _ = {
      ParentName = "RockBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "MineableSteel",
    label = "compacted steel",
    description = [[The remains of some ancient, collapsed structure. Rich in steel.]],
    statBases = {
      MaxHitPoints = 1500,
    },
    building = {
      isResourceRock = true,
      mineableThing = "Steel",
      mineableYield = 40,
    },
  },

  ["ThingDef:MineableSilver"] = {
    _ = {
      ParentName = "RockBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "MineableSilver",
    label = "silver ore",
    description = [[Rock containing bits of silver.]],
    statBases = {
      MaxHitPoints = 1500,
    },
    building = {
      isResourceRock = true,
      mineableThing = "Silver",
      mineableYield = 40,
    },
  },

  ["ThingDef:MineableGold"] = {
    _ = {
      ParentName = "RockBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "MineableGold",
    label = "gold ore",
    description = [[Rock containing bits of gold.]],
    statBases = {
      MaxHitPoints = 1500,
    },
    building = {
      isResourceRock = true,
      mineableThing = "Gold",
      mineableYield = 40,
    },
  },

  ["ThingDef:MineableUranium"] = {
    _ = {
      ParentName = "RockBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "MineableUranium",
    label = "uranium ore",
    description = [[Rock containing bits of uranium.]],
    statBases = {
      MaxHitPoints = 4000,
    },
    building = {
      isResourceRock = true,
      mineableThing = "Uranium",
      mineableYield = 40,
    },
  },

  ["ThingDef:MineablePlasteel"] = {
    _ = {
      ParentName = "RockBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "MineablePlasteel",
    label = "compacted plasteel",
    description = [[Ancient compacted rubble rich in plasteel.]],
    statBases = {
      MaxHitPoints = 8000,
    },
    building = {
      isResourceRock = true,
      mineableThing = "Plasteel",
      mineableYield = 40,
    },
  },

  ["ThingDef:MineableJade"] = {
    _ = {
      ParentName = "RockBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "MineableJade",
    label = "jade",
    description = [[Rock containing bits of jade.]],
    statBases = {
      MaxHitPoints = 1500,
    },
    building = {
      isResourceRock = true,
      mineableThing = "Jade",
      mineableYield = 40,
    },
  },

  ["ThingDef:MineableComponentsIndustrial"] = {
    _ = {
      ParentName = "RockBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "MineableComponentsIndustrial",
    label = "compacted machinery",
    description = [[Ancient machinery, compacted over time. Can be mined for useful components.]],
    statBases = {
      MaxHitPoints = 2000,
    },
    building = {
      isResourceRock = true,
      mineableThing = "ComponentIndustrial",
      mineableYield = 2,
    },
  },

  ["ThingDef:SteamGeyser"] = {
    _ = {
      ParentName = "BuildingNaturalBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "SteamGeyser",
    label = "steam geyser",
    description = [[A natural source of high-pressure steam. Geothermal generators can harness the steam power. Rooms built over this will rapidly cook.]],
    thingClass = "Building_SteamGeyser",
    altitudeLayer = "Floor",
    useHitPoints = false,
    size = {2, 2},
    building = {
      isEdifice = false,
      deconstructible = false,
    },
  },

  ["ThingDef:Hive"] = {
    _ = {
      ParentName = "BuildingNaturalBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "Hive",
    label = "hive",
    description = [[A hive of giant insects. If activated, it will spawn additional insects and hives over time, as well as valuable insect jelly.]],
    thingClass = "Hive",
    altitudeLayer = "Building",
    fillPercent = 0.5,
    statBases = {
      MaxHitPoints = 130,
      Flammability = 1.0,
    },
    pathCost = 42,
    passability = "PassThroughOnly",
    killedLeavings = {
      InsectJelly = 30,
    },
    comps = {
      CompProperties_CanBeDormant = {
        startsDormant = true,
        canWakeUpFogged = false,
      },
      CompProperties_WakeUpDormant = {},
      CompProperties_SpawnerPawn = {
        spawnablePawnKinds = {
          "Megascarab",
          "Spelopede",
          "Megaspider",
        },
        lordJob = "LordJob_DefendAndExpandHive",
        spawnSound = "Hive_Spawn",
        initialPawnsPoints = 200,
        maxSpawnedPawnsPoints = 500,
      },
      CompProperties_SelfhealHitpoints = {
        ticksPerHeal = 6000,
      },
      CompProperties_SpawnerHives = {},
      CompProperties_Spawner = {
        thingToSpawn = "InsectJelly",
        spawnCount = 20,
        spawnIntervalRange = { ["<"]=26000, [">"]=30000 },
        spawnMaxAdjacent = 40,
        spawnForbidden = true,
        saveKeysPrefix = "jelly",
      },
      CompProperties_Spawner = {
        thingToSpawn = "GlowPod",
        spawnCount = 1,
        spawnIntervalRange = { ["<"]=30000, [">"]=60000 },
        spawnMaxAdjacent = 1,
        saveKeysPrefix = "pod",
        inheritFaction = true,
      },
      CompProperties_HeatPusher = {
        heatPerSecond = 6,
        heatPushMaxTemperature = 38,
      },
      CompProperties_SpawnerFilth = {
        filthDef = "Filth_Slime",
        spawnCountOnSpawn = 10,
        spawnMtbHours = 4,
        spawnRadius = 5,
      },
      CompProperties_Maintainable = {
        ticksHealthy = 60000,
        ticksNeedsMaintenance = 60000,
        damagePerTickRare = 10,
      },
    },
  },

  ["ThingDef:GlowPod"] = {
    _ = {
      ParentName = "BuildingNaturalBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "GlowPod",
    label = "glow pod",
    description = [[A bioluminescent pod produced by giant insects. Glows under its own light for a long time, then dies.]],
    thingClass = "Building",
    minifiedDef = "MinifiedThing",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.20,
    leaveResourcesWhenKilled = false,
    thingCategories = {
      "BuildingsSpecial",
    },
    statBases = {
      MaxHitPoints = 50,
      Mass = 4,
      Flammability = 1.0,
      MarketValue = 50,
    },
    comps = {
      CompProperties_Glower = {
        glowRadius = 6,
        glowColor = {113, 141, 117, 0},
      },
      CompProperties_Lifespan = {
        lifespanTicks = 1200000,
      },
    },
  },

  ["ThingDef:RaisedRocks"] = {
    _ = {
      ParentName = "RockBase",
      Name = "RaisedRocks",
      DefCategory = "ThingDef",
      FileName = "Buildings_Natural.xml",
      DLC = "Core",
    },
    defName = "RaisedRocks",
    label = "raised rocks",
    description = [[A fragile wall made of rubble. It will collapse in time.]],
    leaveResourcesWhenKilled = false,
    building = {
      isNaturalRock = false,
    },
    comps = {
      CompProperties_Lifespan = {
        lifespanTicks = 10000,
        expireEffect = "RaisedRock_Collapse",
      },
    },
  },

  ["ThingDef:PowerConduit"] = {
    _ = {
      ParentName = "BuildingBase",
      Name = "PowerConduit",
      DefCategory = "ThingDef",
      FileName = "Buildings_Power.xml",
      DLC = "Core",
    },
    defName = "PowerConduit",
    label = "power conduit",
    description = [[A bundle of electrical cables for moving power around. Can be placed under walls and other buildings.]],
    thingClass = "Building",
    category = "Building",
    building = {
      isInert = true,
      isEdifice = false,
    },
    altitudeLayer = "Conduits",
    passability = "Standable",
    leaveResourcesWhenKilled = false,
    statBases = {
      MaxHitPoints = 80,
      WorkToBuild = 35,
      Flammability = 0.7,
      Beauty = -2,
    },
    costList = {
      Steel = 1,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTransmitter",
        transmitsPower = true,
      },
    },
    terrainAffordanceNeeded = "Light",
    researchPrerequisites = {
      "Electricity",
    },
  },

  ["ThingDef:WaterproofConduit"] = {
    _ = {
      ParentName = "PowerConduit",
      DefCategory = "ThingDef",
      FileName = "Buildings_Power.xml",
      DLC = "Core",
    },
    defName = "WaterproofConduit",
    label = "waterproof conduit",
    description = [[Insulated electrical cables for transmitting power under shallow water.]],
    terrainAffordanceNeeded = "ShallowWater",
    costList = {
      Steel = 10,
    },
  },

  ["ThingDef:PowerSwitch"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Power.xml",
      DLC = "Core",
    },
    defName = "PowerSwitch",
    label = "power switch",
    description = [[Switches power on/off.]],
    thingClass = "Building_PowerSwitch",
    category = "Building",
    altitudeLayer = "Building",
    passability = "Standable",
    leaveResourcesWhenKilled = false,
    statBases = {
      MaxHitPoints = 120,
      WorkToBuild = 200,
      Flammability = 0.5,
      Beauty = -2,
    },
    costList = {
      Steel = 15,
      ComponentIndustrial = 1,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTransmitter",
        transmitsPower = true,
      },
      CompProperties_Flickable = {},
    },
    researchPrerequisites = {
      "Electricity",
    },
  },

  ["ThingDef:WoodFiredGenerator"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Power.xml",
      DLC = "Core",
    },
    defName = "WoodFiredGenerator",
    label = "wood-fired generator",
    description = [[Produces power by consuming wood. Must be periodically loaded with wood fuel by hand.]],
    thingClass = "Building",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 1.0,
    statBases = {
      MaxHitPoints = 300,
      WorkToBuild = 2500,
      Flammability = 1.0,
      Beauty = -20,
    },
    size = {2, 2},
    costList = {
      Steel = 100,
      ComponentIndustrial = 2,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerPlant",
        basePowerConsumption = -1000,
        transmitsPower = true,
        soundAmbientProducingPower = "WoodFiredGenerator_Ambience",
      },
      CompProperties_Flickable = {},
      CompProperties_Refuelable = {
        fuelConsumptionRate = 22.0,
        fuelCapacity = 75.0,
        fuelFilter = {
          thingDefs = {
            "WoodLog",
          },
        },
        showAllowAutoRefuelToggle = true,
      },
      CompProperties_Glower = {
        glowRadius = 6,
        glowColor = {217, 112, 33, 0},
      },
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 6,
      },
      CompProperties_Breakdownable = {},
    },
    terrainAffordanceNeeded = "Medium",
    researchPrerequisites = {
      "Electricity",
    },
  },

  ["ThingDef:ChemfuelPoweredGenerator"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Power.xml",
      DLC = "Core",
    },
    defName = "ChemfuelPoweredGenerator",
    label = "chemfuel powered generator",
    description = [[Produces power by consuming chemfuel. Must be periodically refueled by hand.]],
    thingClass = "Building",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 1.0,
    statBases = {
      MaxHitPoints = 300,
      WorkToBuild = 2500,
      Flammability = 1.0,
      Beauty = -20,
    },
    size = {2, 2},
    costList = {
      Steel = 100,
      ComponentIndustrial = 3,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerPlant",
        basePowerConsumption = -1000,
        transmitsPower = true,
        soundAmbientProducingPower = "ChemfuelFiredGenerator_Ambience",
      },
      CompProperties_Flickable = {},
      CompProperties_Refuelable = {
        fuelConsumptionRate = 4.5,
        fuelCapacity = 30.0,
        fuelFilter = {
          thingDefs = {
            "Chemfuel",
          },
        },
        showAllowAutoRefuelToggle = true,
      },
      CompProperties_Glower = {
        glowRadius = 6,
        glowColor = {80, 112, 180, 0},
      },
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 6,
      },
      CompProperties_Breakdownable = {},
      CompProperties_Explosive = {
        explosiveRadius = 0,
        explosiveExpandPerFuel = 0.95,
        explosiveDamageType = "Flame",
        destroyThingOnExplosionSize = 2,
        startWickHitPointsPercent = 0.333,
        preExplosionSpawnThingDef = "Filth_Fuel",
        preExplosionSpawnChance = 1,
        wickTicks = { ["<"]=70, [">"]=150 },
      },
    },
    terrainAffordanceNeeded = "Medium",
    researchPrerequisites = {
      "Electricity",
    },
  },

  ["ThingDef:WindTurbine"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Power.xml",
      DLC = "Core",
    },
    defName = "WindTurbine",
    thingClass = "Building",
    label = "wind turbine",
    description = [[A wind-powered electrical generator. Requires a large clear space in front and behind for optimal air flow.]],
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 0.5,
    statBases = {
      MaxHitPoints = 150,
      WorkToBuild = 3300,
      Flammability = 0.5,
      Beauty = -12,
    },
    size = {7, 2},
    terrainAffordanceNeeded = "Heavy",
    costList = {
      Steel = 100,
      ComponentIndustrial = 2,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerPlantWind",
        basePowerConsumption = -2300,
        transmitsPower = true,
      },
      CompProperties_Breakdownable = {},
    },
    researchPrerequisites = {
      "Electricity",
    },
  },

  ["ThingDef:Battery"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Power.xml",
      DLC = "Core",
    },
    defName = "Battery",
    label = "battery",
    description = [[Stores electricity for later use. Charged batteries explode when exposed to rain or fire.]],
    thingClass = "Building_Battery",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 0.40,
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsPower",
    },
    statBases = {
      MaxHitPoints = 100,
      WorkToBuild = 800,
      Mass = 20,
      Flammability = 1.0,
      Beauty = -15,
    },
    size = {1, 2},
    costList = {
      Steel = 70,
      ComponentIndustrial = 2,
    },
    comps = {
      CompProperties_Battery = {
        storedEnergyMax = 600,
        efficiency = 0.5,
        shortCircuitInRain = true,
        transmitsPower = true,
      },
      CompProperties_Breakdownable = {},
    },
    terrainAffordanceNeeded = "Medium",
    researchPrerequisites = {
      "Batteries",
    },
  },

  ["ThingDef:SolarGenerator"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Power.xml",
      DLC = "Core",
    },
    defName = "SolarGenerator",
    label = "solar generator",
    description = [[Produces electricity from sunlight. Does not work in the dark or under artificial light.]],
    thingClass = "Building",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 0.5,
    statBases = {
      MaxHitPoints = 300,
      WorkToBuild = 2500,
      Flammability = 0.7,
    },
    size = {4, 4},
    costList = {
      Steel = 100,
      ComponentIndustrial = 3,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerPlantSolar",
        basePowerConsumption = -1,
        transmitsPower = true,
      },
      CompProperties_Breakdownable = {},
    },
    terrainAffordanceNeeded = "Medium",
    researchPrerequisites = {
      "SolarPanels",
    },
  },

  ["ThingDef:GeothermalGenerator"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Power.xml",
      DLC = "Core",
    },
    defName = "GeothermalGenerator",
    label = "geothermal generator",
    description = [[Produces electricity from geothermal steam geysers. Must be placed on a steam geyser.]],
    thingClass = "Building",
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    statBases = {
      MaxHitPoints = 500,
      WorkToBuild = 12000,
      Flammability = 0.5,
      Beauty = -30,
    },
    size = {6, 6},
    costList = {
      Steel = 340,
      ComponentIndustrial = 8,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerPlantSteam",
        basePowerConsumption = -3600,
        transmitsPower = true,
      },
      CompProperties_Breakdownable = {},
    },
    terrainAffordanceNeeded = "Heavy",
    researchPrerequisites = {
      "GeothermalPower",
    },
  },

  ["ThingDef:WatermillGenerator"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Power.xml",
      DLC = "Core",
    },
    defName = "WatermillGenerator",
    label = "watermill generator",
    description = [[Produces electricity from a river. Must be placed with its wheel in moving water. If watermills are placed too close together, the turbulence they generate will interfere and reduce power generation.]],
    thingClass = "Building",
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    statBases = {
      MaxHitPoints = 400,
      WorkToBuild = 4000,
      Flammability = 1.0,
      Beauty = -20,
    },
    size = {5, 6},
    costList = {
      WoodLog = 280,
      Steel = 80,
      ComponentIndustrial = 3,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerPlantWater",
        basePowerConsumption = -1100,
        transmitsPower = true,
        soundAmbientProducingPower = "WaterMill_Ambience",
      },
      CompProperties_Breakdownable = {},
    },
    terrainAffordanceNeeded = {},
    researchPrerequisites = {
      "WatermillGenerator",
    },
  },

  ["ThingDef:CraftingSpot"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "CraftingSpot",
    label = "crafting spot",
    description = [[A place for crafting simple items like knives or bows. Production here is slow because of the lack of tools.]],
    thingClass = "Building_WorkTable",
    altitudeLayer = "FloorEmplacement",
    statBases = {
      WorkToBuild = 0,
      WorkTableWorkSpeedFactor = 0.5,
    },
    useHitPoints = false,
    size = {1, 1},
    passability = "Standable",
    hasInteractionCell = true,
    building = {
      sowTag = "SupportPlantsOnly",
      artificialForMeditationPurposes = false,
      buildingTags = {
        "Production",
      },
    },
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
      {
        compClass = "CompReportWorkSpeed",
      },
    },
  },

  ["ThingDef:ButcherSpot"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "ButcherSpot",
    label = "butcher spot",
    description = [[A place for butchering animals. Due to the lack of equipment, butchering here yields only 70% of the meat and leather of each creature.]],
    thingClass = "Building_WorkTable",
    altitudeLayer = "FloorEmplacement",
    statBases = {
      WorkToBuild = 0,
      WorkTableEfficiencyFactor = 0.7,
    },
    useHitPoints = false,
    size = {1, 1},
    passability = "Standable",
    hasInteractionCell = true,
    building = {
      sowTag = "SupportPlantsOnly",
      artificialForMeditationPurposes = false,
      buildingTags = {
        "Production",
      },
    },
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
      {
        compClass = "CompReportWorkSpeed",
      },
    },
  },

  ["ThingDef:BenchBase"] = {
    _ = {
      Name = "BenchBase",
      ParentName = "BuildingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    minifiedDef = "MinifiedThing",
    terrainAffordanceNeeded = "Medium",
    thingCategories = {
      "BuildingsProduction",
    },
    statBases = {
      Mass = 20,
    },
    comps = {
      {
        compClass = "CompReportWorkSpeed",
      },
    },
    building = {
      buildingTags = {
        "Production",
      },
    },
  },

  ["ThingDef:TableSculpting"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "TableSculpting",
    label = "art bench",
    description = [[A workbench equipped for creating art.]],
    thingClass = "Building_WorkTable",
    costList = {
      Steel = 50,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 2500,
      MaxHitPoints = 180,
      Flammability = 1.0,
      Cleanliness = -5,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
    },
  },

  ["ThingDef:TableButcher"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "TableButcher",
    label = "butcher table",
    description = [[A heavy table for butchering dead creatures into pieces of raw meat.]],
    thingClass = "Building_WorkTable",
    costList = {
      WoodLog = 20,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 2000,
      MaxHitPoints = 180,
      Flammability = 1.0,
      Cleanliness = -15,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
    },
  },

  ["ThingDef:HandTailoringBench"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "HandTailoringBench",
    label = "hand tailor bench",
    description = [[A workbench for tailoring clothes by hand. Works at 50% of the speed of an electric tailoring bench.]],
    thingClass = "Building_WorkTable",
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 2000,
      MaxHitPoints = 180,
      Flammability = 1.0,
      WorkTableWorkSpeedFactor = 0.5,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
    },
    researchPrerequisites = {
      "ComplexClothing",
    },
  },

  ["ThingDef:ElectricTailoringBench"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "ElectricTailoringBench",
    label = "electric tailor bench",
    description = [[A workbench with a sewing machine for rapid tailoring of clothes. Can work without electricity at 50% of normal speed.]],
    thingClass = "Building_WorkTable",
    costList = {
      Steel = 50,
      ComponentIndustrial = 2,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 2500,
      MaxHitPoints = 180,
      Flammability = 1.0,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        shortCircuitInRain = true,
        basePowerConsumption = 120,
      },
      CompProperties_Flickable = {},
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
      CompProperties_Breakdownable = {},
    },
    researchPrerequisites = {
      "ComplexClothing",
      "Electricity",
    },
  },

  ["ThingDef:FueledSmithy"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "FueledSmithy",
    label = "fueled smithy",
    description = [[A wood-fueled station for smithing non-mechanical weapons and tools.]],
    thingClass = "Building_WorkTable",
    costList = {
      Steel = 100,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 3000,
      MaxHitPoints = 180,
      Flammability = 1.0,
      Cleanliness = -3,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    comps = {
      CompProperties_Refuelable = {
        fuelConsumptionRate = 80.0,
        fuelCapacity = 50.0,
        fuelFilter = {
          thingDefs = {
            "WoodLog",
          },
        },
        consumeFuelOnlyWhenUsed = true,
        showAllowAutoRefuelToggle = true,
      },
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
    },
    researchPrerequisites = {
      "Smithing",
    },
  },

  ["ThingDef:ElectricSmithy"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "ElectricSmithy",
    label = "electric smithy",
    description = [[An electric-powered station for smithing non-mechanical weapons and tools.]],
    thingClass = "Building_WorkTable",
    costList = {
      Steel = 100,
      ComponentIndustrial = 3,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 3000,
      MaxHitPoints = 180,
      Flammability = 1.0,
      Cleanliness = -3,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        shortCircuitInRain = true,
        basePowerConsumption = 210,
      },
      CompProperties_Flickable = {},
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 4,
      },
    },
    researchPrerequisites = {
      "Smithing",
      "Electricity",
    },
  },

  ["ThingDef:TableMachining"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "TableMachining",
    label = "machining table",
    description = [[A work station for assembling machinery like guns and ammunition, or breaking down dead mechanoids.]],
    thingClass = "Building_WorkTable",
    costList = {
      Steel = 150,
      ComponentIndustrial = 5,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 3000,
      MaxHitPoints = 180,
      Flammability = 1.0,
      Cleanliness = -2,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        shortCircuitInRain = true,
        basePowerConsumption = 350,
      },
      CompProperties_Flickable = {},
      CompProperties_Glower = {
        glowRadius = 5,
        glowColor = {73, 123, 138, 0},
      },
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
      CompProperties_Breakdownable = {},
    },
    researchPrerequisites = {
      "Machining",
    },
  },

  ["ThingDef:ElectricStove"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "ElectricStove",
    label = "electric stove",
    description = [[An electrically-powered stove with an attached countertop for preparing meals.]],
    thingClass = "Building_WorkTable_HeatPush",
    costList = {
      Steel = 80,
      ComponentIndustrial = 2,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 2000,
      MaxHitPoints = 180,
      Flammability = 1.0,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        shortCircuitInRain = true,
        basePowerConsumption = 350,
      },
      CompProperties_Flickable = {},
      CompProperties_Breakdownable = {},
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 3,
      },
    },
    building = {
      isMealSource = true,
      heatPerTickWhileWorking = 0.10,
    },
    researchPrerequisites = {
      "Electricity",
    },
  },

  ["ThingDef:FueledStove"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "FueledStove",
    label = "fueled stove",
    description = [[A wood-fueled stove with an attached countertop for preparing meals.]],
    thingClass = "Building_WorkTable_HeatPush",
    costList = {
      Steel = 80,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 2000,
      MaxHitPoints = 180,
      Flammability = 1.0,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    comps = {
      CompProperties_Refuelable = {
        fuelConsumptionRate = 160.0,
        fuelCapacity = 50.0,
        fuelFilter = {
          thingDefs = {
            "WoodLog",
          },
        },
        consumeFuelOnlyWhenUsed = true,
        showAllowAutoRefuelToggle = true,
      },
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 4,
      },
    },
    building = {
      isMealSource = true,
      heatPerTickWhileWorking = 0.10,
    },
  },

  ["ThingDef:TableStonecutter"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "TableStonecutter",
    label = "stonecutter's table",
    description = [[A work table with saws and chisels for cutting stone chunks into usable blocks.]],
    thingClass = "Building_WorkTable_HeatPush",
    costList = {
      Steel = 30,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 2000,
      MaxHitPoints = 180,
      Flammability = 1.0,
      Cleanliness = -5,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    terrainAffordanceNeeded = "Heavy",
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
    },
    researchPrerequisites = {
      "Stonecutting",
    },
  },

  ["ThingDef:Brewery"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "Brewery",
    label = "brewery",
    description = [[A work station with all the equipment needed to mix wort for beer production. Wort must be fermented to finally become beer.]],
    thingClass = "Building_WorkTable",
    costList = {
      WoodLog = 120,
      Steel = 30,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 2000,
      MaxHitPoints = 180,
      Flammability = 1.0,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    researchPrerequisites = {
      "Brewing",
    },
  },

  ["ThingDef:DrugLab"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "DrugLab",
    label = "drug lab",
    description = [[A work bench equipped with containers, heaters, and measurement devices for producing various drugs.]],
    thingClass = "Building_WorkTable",
    costList = {
      Steel = 75,
      ComponentIndustrial = 6,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 3500,
      MaxHitPoints = 120,
      Flammability = 1.0,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
    },
    researchPrerequisites = {
      "DrugProduction",
    },
  },

  ["ThingDef:ElectricSmelter"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "ElectricSmelter",
    label = "electric smelter",
    description = [[Extracts usable metal from slag chunks and other mixed metal items. Consumes a lot of power.]],
    thingClass = "Building_WorkTable_HeatPush",
    costList = {
      Steel = 170,
      ComponentIndustrial = 2,
    },
    altitudeLayer = "Building",
    fillPercent = 0.5,
    useHitPoints = true,
    statBases = {
      WorkToBuild = 3500,
      MaxHitPoints = 180,
      Flammability = 1.0,
    },
    size = {3, 1},
    passability = "PassThroughOnly",
    pathCost = 50,
    hasInteractionCell = true,
    terrainAffordanceNeeded = "Heavy",
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 700,
        shortCircuitInRain = true,
      },
      CompProperties_Flickable = {},
      CompProperties_Glower = {
        glowRadius = 6,
        glowColor = {217, 112, 33, 0},
      },
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 9,
      },
      CompProperties_Breakdownable = {},
    },
    building = {
      heatPerTickWhileWorking = 0.32,
    },
    researchPrerequisites = {
      "Electricity",
    },
  },

  ["ThingDef:BiofuelRefinery"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "BiofuelRefinery",
    label = "biofuel refinery",
    description = [[Refines biological matter like wood or plant matter into chemfuel.]],
    thingClass = "Building_WorkTable",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 50,
    statBases = {
      MaxHitPoints = 200,
      WorkToBuild = 2000,
      Flammability = 1.0,
    },
    minifiedDef = {},
    thingCategories = {
      _ = {
        Inherit = false,
      },
    },
    size = {3, 2},
    costList = {
      Steel = 150,
      ComponentIndustrial = 3,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 170,
        shortCircuitInRain = true,
      },
      CompProperties_Flickable = {},
      CompProperties_Breakdownable = {},
    },
    fillPercent = 0.5,
    hasInteractionCell = true,
    terrainAffordanceNeeded = "Heavy",
    researchPrerequisites = {
      "BiofuelRefining",
    },
  },

  ["ThingDef:FabricationBench"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "FabricationBench",
    label = "fabrication bench",
    description = [[A workbench equipped with advanced tools for producing technological marvels from simpler materials.]],
    thingClass = "Building_WorkTable",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 50,
    statBases = {
      MaxHitPoints = 300,
      WorkToBuild = 5000,
      Flammability = 1.0,
    },
    minifiedDef = {},
    thingCategories = {
      _ = {
        Inherit = false,
      },
    },
    size = {5, 2},
    costList = {
      Steel = 200,
      ComponentIndustrial = 12,
      ComponentSpacer = 2,
    },
    comps = {
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "ToolCabinet",
        },
      },
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 250,
        shortCircuitInRain = true,
      },
      CompProperties_Flickable = {},
      CompProperties_Breakdownable = {},
    },
    fillPercent = 0.5,
    hasInteractionCell = true,
    terrainAffordanceNeeded = "Heavy",
    researchPrerequisites = {
      "Fabrication",
    },
  },

  ["ThingDef:SimpleResearchBench"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "SimpleResearchBench",
    label = "simple research bench",
    description = [[A simple bench with writing implements and simple measurement devices. Researchers work here to discover new things.]],
    thingClass = "Building_ResearchBench",
    size = {3, 2},
    costList = {
      Steel = 25,
    },
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 50,
    statBases = {
      MaxHitPoints = 250,
      WorkToBuild = 2800,
      Flammability = 1.0,
      ResearchSpeedFactor = 0.75,
    },
    fillPercent = 0.5,
    hasInteractionCell = true,
  },

  ["ThingDef:HiTechResearchBench"] = {
    _ = {
      ParentName = "BenchBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "HiTechResearchBench",
    label = "hi-tech research bench",
    description = [[A high-tech bench with computers and electronic measurement equipment. Allows more rapid research, and unlocks advanced research projects.]],
    thingClass = "Building_ResearchBench",
    size = {5, 2},
    minifiedDef = {},
    thingCategories = {
      _ = {
        Inherit = false,
      },
    },
    costList = {
      Steel = 100,
      ComponentIndustrial = 10,
    },
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 50,
    statBases = {
      MaxHitPoints = 250,
      WorkToBuild = 5000,
      Flammability = 1.0,
      ResearchSpeedFactor = 1.0,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 250,
        shortCircuitInRain = true,
      },
      CompProperties_Flickable = {},
      CompProperties_AffectedByFacilities = {
        linkableFacilities = {
          "MultiAnalyzer",
        },
      },
    },
    fillPercent = 0.5,
    hasInteractionCell = true,
    terrainAffordanceNeeded = "Heavy",
    researchPrerequisites = {
      "MicroelectronicsBasics",
    },
  },

  ["ThingDef:ElectricCrematorium"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "ElectricCrematorium",
    label = "electric crematorium",
    description = [[A huge stone crematorium which vaporizes corpses with extremely high temperatures.]],
    thingClass = "Building_WorkTable_HeatPush",
    costList = {
      Steel = 20,
      ComponentIndustrial = 2,
    },
    altitudeLayer = "Building",
    useHitPoints = true,
    statBases = {
      WorkToBuild = 4500,
      MaxHitPoints = 300,
      Cleanliness = -20,
      Beauty = -10,
    },
    size = {3, 2},
    fillPercent = 1,
    passability = "Impassable",
    hasInteractionCell = true,
    terrainAffordanceNeeded = "Heavy",
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 250,
        shortCircuitInRain = true,
      },
      CompProperties_Flickable = {},
      CompProperties_Glower = {
        glowRadius = 6,
        glowColor = {217, 112, 33, 0},
      },
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 12,
      },
    },
    building = {
      heatPerTickWhileWorking = 0.32,
      buildingTags = {
        "Production",
      },
    },
    researchPrerequisites = {
      "Electricity",
    },
  },

  ["ThingDef:HydroponicsBasin"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "HydroponicsBasin",
    label = "hydroponics basin",
    description = [[An artificial nutrient bath for growing plants. The nutrients pumps must work continuously; the plants will die if power is cut.]],
    thingClass = "Building_PlantGrower",
    altitudeLayer = "LowPlant",
    passability = "PassThroughOnly",
    pathCost = 30,
    fillPercent = 0.30,
    statBases = {
      WorkToBuild = 2800,
      MaxHitPoints = 180,
      Flammability = 0.5,
      Cleanliness = -3,
    },
    size = {1, 4},
    costList = {
      Steel = 100,
      ComponentIndustrial = 1,
    },
    building = {
      defaultPlantToGrow = "Plant_Rice",
      sowTag = "Hydroponic",
      buildingTags = {
        "Production",
      },
    },
    comps = {
      CompProperties_Forbiddable = {},
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 70,
      },
      CompProperties_Flickable = {},
    },
    researchPrerequisites = {
      "Hydroponics",
    },
    terrainAffordanceNeeded = "Medium",
  },

  ["ThingDef:FermentingBarrel"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "FermentingBarrel",
    label = "fermenting barrel",
    description = [[A barrel for fermenting raw wort into beer.]],
    thingClass = "Building_FermentingBarrel",
    minifiedDef = "MinifiedThing",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.45,
    pathCost = 42,
    thingCategories = {
      "BuildingsProduction",
    },
    statBases = {
      WorkToBuild = 600,
      Mass = 10,
      MaxHitPoints = 100,
      Flammability = 1.0,
    },
    costList = {
      Steel = 10,
      WoodLog = 30,
    },
    comps = {
      CompProperties_TemperatureRuinable = {
        minSafeTemperature = -1,
        maxSafeTemperature = 32,
        progressPerDegreePerTick = 0.00001,
      },
    },
    building = {
      buildingTags = {
        "Production",
      },
    },
    researchPrerequisites = {
      "Brewing",
    },
  },

  ["ThingDef:DeepDrill"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "DeepDrill",
    label = "deep drill",
    description = [[A deep-crust drilling rig for extracting minerals from deep under the surface. Use a ground-penetrating scanner to detect the resources. This drill will yield stone chunks if no resources are present. Can be repositioned freely.]],
    size = {1, 1},
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 0.5,
    hasInteractionCell = true,
    terrainAffordanceNeeded = "Light",
    minifiedDef = "MinifiedThing",
    building = {
      buildingTags = {
        "Production",
      },
    },
    thingCategories = {
      "BuildingsProduction",
    },
    costList = {
      Steel = 100,
      ComponentIndustrial = 2,
    },
    researchPrerequisites = {
      "DeepDrilling",
    },
    statBases = {
      MaxHitPoints = 300,
      WorkToBuild = 10000,
      Flammability = 0.5,
      Beauty = -25,
      Mass = 35,
    },
    comps = {
      CompProperties_Forbiddable = {},
      CompProperties_Flickable = {},
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 200,
      },
      CompProperties_DeepDrill = {},
      CompProperties_CreatesInfestations = {},
    },
  },

  ["ThingDef:NutrientPasteDispenser"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "NutrientPasteDispenser",
    label = "nutrient paste dispenser",
    description = [[A machine that synthesizes edible nutrient paste from organic feedstocks placed in adjacent hoppers. It consumes less ingredients and time than any other meal production method - but nobody likes eating nutrient paste. Accepts raw food, but not rough plant matter like hay.]],
    thingClass = "Building_NutrientPasteDispenser",
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    statBases = {
      WorkToBuild = 2200,
      MaxHitPoints = 350,
      Flammability = 0.5,
    },
    building = {
      isMealSource = true,
      buildingTags = {
        "Production",
      },
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 200,
      },
      CompProperties_Flickable = {},
      CompProperties_Breakdownable = {},
    },
    size = {3, 4},
    costList = {
      Steel = 90,
      ComponentIndustrial = 3,
    },
    hasInteractionCell = true,
    terrainAffordanceNeeded = "Heavy",
    researchPrerequisites = {
      "NutrientPaste",
    },
  },

  ["ThingDef:Hopper"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Production.xml",
      DLC = "Core",
    },
    defName = "Hopper",
    label = "hopper",
    description = [[Holds resources for use by machines like nutrient paste dispensers.]],
    thingClass = "Building_Storage",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.5,
    pathCost = 42,
    building = {
      fixedStorageSettings = {
        priority = "Important",
        filter = {
          categories = {
            "FoodRaw",
          },
          specialFiltersToDisallow = {
            "AllowPlantFood",
          },
        },
      },
      defaultStorageSettings = {
        priority = "Important",
        filter = {
          categories = {
            "FoodRaw",
          },
          disallowedThingDefs = {
            "Meat_Human",
            "Meat_Megaspider",
          },
        },
      },
      buildingTags = {
        "Production",
      },
    },
    statBases = {
      WorkToBuild = 300,
      MaxHitPoints = 100,
      Flammability = 0.5,
    },
    costList = {
      Steel = 15,
    },
    researchPrerequisites = {
      "NutrientPaste",
    },
  },

  ["ThingDef:Sandbags"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security.xml",
      DLC = "Core",
    },
    defName = "Sandbags",
    label = "sandbags",
    description = [[Bags of locally-sourced dirt or sand, stacked for use as cover. Sandbags are ugly, but provide better cover than other low objects.]],
    thingClass = "Building",
    category = "Building",
    altitudeLayer = "Building",
    pathCost = 42,
    pathCostIgnoreRepeat = true,
    passability = "PassThroughOnly",
    fillPercent = 0.57,
    statBases = {
      MaxHitPoints = 300,
      Beauty = -10,
      WorkToBuild = 180,
      Flammability = 0,
    },
    building = {
      isInert = true,
    },
    terrainAffordanceNeeded = "Light",
  },

  ["ThingDef:Barricade"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security.xml",
      DLC = "Core",
    },
    defName = "Barricade",
    label = "barricade",
    description = [[A waist-high barrier for use as cover from incoming shots. Barricades are ugly, but provide better cover than other low objects.]],
    thingClass = "Building",
    category = "Building",
    altitudeLayer = "Building",
    pathCost = 42,
    pathCostIgnoreRepeat = true,
    passability = "PassThroughOnly",
    fillPercent = 0.57,
    statBases = {
      MaxHitPoints = 300,
      Beauty = -3,
      WorkToBuild = 320,
      Flammability = 1,
    },
    building = {
      isInert = true,
    },
    terrainAffordanceNeeded = "Heavy",
  },

  ["ThingDef:TrapSpike"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security.xml",
      DLC = "Core",
    },
    defName = "TrapSpike",
    label = "spike trap",
    description = [[Five spikes under tension, connected to a touch-activated trigger. When the victim disturbs the trigger, the spikes spring forth and strike the victim. Since it is hidden in the surrounding terrain, it cannot be placed adjacent to other traps. Animals can sense these when calm.]],
    thingClass = "Building_TrapDamager",
    altitudeLayer = "Building",
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsSecurity",
    },
    statBases = {
      Mass = 2.5,
      MaxHitPoints = 40,
      WorkToBuild = 3200,
      Flammability = 1,
      Beauty = -18,
      Cleanliness = -5,
      TrapMeleeDamage = 100,
      TrapSpringChance = 1.0,
    },
    building = {
      isTrap = true,
    },
  },

  ["ThingDef:TrapIEDBase"] = {
    _ = {
      Name = "TrapIEDBase",
      ParentName = "BuildingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Security.xml",
      DLC = "Core",
    },
    thingClass = "Building_TrapExplosive",
    altitudeLayer = "Building",
    minifiedDef = "MinifiedThing",
    leaveResourcesWhenKilled = false,
    thingCategories = {
      "BuildingsSecurity",
    },
    statBases = {
      Mass = 2,
      MaxHitPoints = 40,
      WorkToBuild = 1400,
      Flammability = 1,
      Beauty = -4,
      TrapSpringChance = 1.0,
    },
    building = {
      isTrap = true,
    },
    researchPrerequisites = {
      "IEDs",
    },
  },

  ["ThingDef:TrapIED_HighExplosive"] = {
    _ = {
      ParentName = "TrapIEDBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security.xml",
      DLC = "Core",
    },
    defName = "TrapIED_HighExplosive",
    label = "IED trap",
    description = [[A pair of high-explosive shells connected to a trigger which detonates on touch or bullet impact. Since it is hidden in the surrounding terrain, it cannot be placed adjacent to other traps. Animals can sense these when calm.]],
    costList = {
      Shell_HighExplosive = 2,
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 3.9,
        explosiveDamageType = "Bomb",
        startWickHitPointsPercent = 0.2,
        wickTicks = 15,
        startWickOnDamageTaken = {
          "Bullet",
          "Arrow",
          "ArrowHighVelocity",
        },
      },
    },
  },

  ["ThingDef:TrapIED_Incendiary"] = {
    _ = {
      ParentName = "TrapIEDBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security.xml",
      DLC = "Core",
    },
    defName = "TrapIED_Incendiary",
    label = "IED incendiary trap",
    description = [[A pair of incendiary shells connected to a trigger which detonates on touch or bullet impact. Since it is hidden in the surrounding terrain, it cannot be placed adjacent to other traps. Animals can sense these when calm.]],
    costList = {
      Shell_Incendiary = 2,
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 3.9,
        explosiveDamageType = "Flame",
        startWickHitPointsPercent = 0.2,
        wickTicks = 15,
        startWickOnDamageTaken = {
          "Bullet",
          "Arrow",
          "ArrowHighVelocity",
        },
      },
    },
  },

  ["ThingDef:TrapIED_EMP"] = {
    _ = {
      ParentName = "TrapIEDBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security.xml",
      DLC = "Core",
    },
    defName = "TrapIED_EMP",
    label = "IED EMP trap",
    description = [[A pair of EMP shells connected to a trigger which detonates on touch or bullet impact. The explosion can paralyze mechanoids for a few seconds. Since it is hidden in the surrounding terrain, it cannot be placed adjacent to other traps. Animals can sense these when calm.]],
    costList = {
      Shell_EMP = 2,
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 10.9,
        explosiveDamageType = "EMP",
        startWickHitPointsPercent = 0.2,
        wickTicks = 15,
        startWickOnDamageTaken = {
          "Bullet",
          "Arrow",
          "ArrowHighVelocity",
        },
      },
    },
  },

  ["ThingDef:TrapIED_Smoke"] = {
    _ = {
      ParentName = "TrapIEDBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security.xml",
      DLC = "Core",
    },
    defName = "TrapIED_Smoke",
    label = "IED Smoke trap",
    description = [[A pair of smoke shells connected to a trigger which detonates on touch or bullet impact. Since it is hidden in the surrounding terrain, it cannot be placed adjacent to other traps. Animals can sense these when calm.]],
    costList = {
      Shell_Smoke = 2,
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 8.6,
        explosiveDamageType = "Smoke",
        startWickHitPointsPercent = 0.2,
        postExplosionSpawnThingDef = "Gas_Smoke",
        postExplosionSpawnChance = 1,
        postExplosionSpawnThingCount = 1,
        wickTicks = 15,
        startWickOnDamageTaken = {
          "Bullet",
          "Arrow",
          "ArrowHighVelocity",
        },
      },
    },
  },

  ["ThingDef:TrapIED_Firefoam"] = {
    _ = {
      ParentName = "TrapIEDBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security.xml",
      DLC = "Core",
    },
    defName = "TrapIED_Firefoam",
    label = "IED firefoam trap",
    description = [[A pair of firefoam shells connected to a trigger which detonates on touch or bullet impact. Since it is hidden in the surrounding terrain, it cannot be placed adjacent to other traps. Animals can sense these when calm.]],
    costList = {
      Shell_Firefoam = 2,
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 9.9,
        explosiveDamageType = "Extinguish",
        startWickHitPointsPercent = 0.2,
        postExplosionSpawnThingDef = "Filth_FireFoam",
        postExplosionSpawnChance = 1,
        postExplosionSpawnThingCount = 3,
        applyDamageToExplosionCellsNeighbors = true,
        explosionEffect = "ExtinguisherExplosion",
        wickTicks = 15,
        startWickOnDamageTaken = {
          "Bullet",
          "Arrow",
          "ArrowHighVelocity",
        },
      },
    },
  },

  ["ThingDef:TrapIED_AntigrainWarhead"] = {
    _ = {
      ParentName = "TrapIEDBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security.xml",
      DLC = "Core",
    },
    defName = "TrapIED_AntigrainWarhead",
    label = "IED antigrain warhead trap",
    description = [[An antimatter-powered antigrain warhead connected to a trigger which detonates on touch or bullet impact. Since it is hidden in the surrounding terrain, it cannot be placed adjacent to other traps. Animals can sense these when calm.]],
    costList = {
      Shell_AntigrainWarhead = 1,
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 14.9,
        explosiveDamageType = "BombSuper",
        startWickHitPointsPercent = 0.2,
        chanceToStartFire = 0.22,
        damageFalloff = true,
        explosionEffect = "GiantExplosion",
        explosionSound = "Explosion_GiantBomb",
        wickTicks = 15,
        startWickOnDamageTaken = {
          "Bullet",
          "Arrow",
          "ArrowHighVelocity",
        },
      },
    },
  },

  ["ThingDef:BaseWeaponTurret"] = {
    _ = {
      Abstract = true,
      Name = "BaseWeaponTurret",
      ParentName = "BaseWeapon",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    tradeability = "None",
    useHitPoints = false,
    weaponTags = {
      "TurretGun",
    },
  },

  ["ThingDef:BaseArtilleryWeapon"] = {
    _ = {
      Abstract = true,
      Name = "BaseArtilleryWeapon",
      ParentName = "BaseWeaponTurret",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    weaponTags = {
      _ = {
        Inherit = false,
      },
      "Artillery",
    },
  },

  ["ThingDef:BaseArtilleryBuilding"] = {
    _ = {
      Name = "BaseArtilleryBuilding",
      ParentName = "BuildingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    thingClass = "Building_TurretGun",
    minifiedDef = "MinifiedThing",
    altitudeLayer = "Building",
    hasInteractionCell = true,
    size = {2, 2},
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 0.4,
    thingCategories = {
      "BuildingsSecurity",
    },
    terrainAffordanceNeeded = "Light",
    costList = {
      Steel = 150,
      ComponentIndustrial = 6,
    },
    comps = {
      CompProperties_Forbiddable = {},
      CompProperties_Mannable = {
        manWorkType = "Violent",
      },
    },
    statBases = {
      MaxHitPoints = 180,
      Flammability = 0.7,
      WorkToBuild = 2000,
      Mass = 30,
      Beauty = -20,
    },
    building = {
      turretBurstWarmupTime = 4.0,
      turretBurstCooldownTime = 28.0,
      buildingTags = {
        "Artillery",
      },
    },
    researchPrerequisites = {
      "Mortars",
    },
  },

  ["ThingDef:Turret_MiniTurret"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    defName = "Turret_MiniTurret",
    label = "mini-turret",
    description = [[A portable automatic turret. Requires steel to refurbish its barrel after heavy use. May explode when damaged. Its dumb AI brain can't be directly controlled, so beware of friendly fire.]],
    thingClass = "Building_TurretGun",
    minifiedDef = "MinifiedThing",
    altitudeLayer = "Building",
    thingCategories = {
      "BuildingsSecurity",
    },
    statBases = {
      MaxHitPoints = 100,
      Flammability = 0.7,
      WorkToBuild = 1800,
      Mass = 8,
      Beauty = -20,
      ShootingAccuracyTurret = 0.96,
    },
    comps = {
      CompProperties_Explosive = {
        wickTicks = 240,
        explosiveRadius = 3.9,
        explosiveDamageType = "Bomb",
        chanceNeverExplodeFromDamage = 0.5,
      },
      CompProperties_Forbiddable = {},
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 80,
      },
      CompProperties_Flickable = {},
      CompProperties_Breakdownable = {},
      CompProperties_Refuelable = {
        fuelLabel = "Shots until barrel change",
        fuelGizmoLabel = "Barrel durability",
        outOfFuelMessage = "Cannot shoot: Needs new barrel",
        fuelFilter = {
          thingDefs = {
            "Steel",
          },
        },
        fuelCapacity = 60,
        fuelMultiplier = 0.75,
        initialFuelPercent = 1,
        autoRefuelPercent = 0.5,
        showFuelGizmo = true,
        minimumFueledThreshold = 1,
        factorByDifficulty = true,
        consumeFuelOnlyWhenUsed = true,
        fuelIconPath = "UI/Overlays/Barrel",
      },
    },
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 0.4,
    costList = {
      Steel = 70,
      ComponentIndustrial = 3,
    },
    terrainAffordanceNeeded = "Light",
    building = {
      combatPower = 45,
      turretGunDef = "Gun_MiniTurret",
      turretBurstCooldownTime = 4.8,
    },
    researchPrerequisites = {
      "GunTurrets",
    },
  },

  ["ThingDef:Bullet_MiniTurret"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    defName = "Bullet_MiniTurret",
    label = "mini-turret bullet",
  },

  ["ThingDef:Gun_MiniTurret"] = {
    _ = {
      ParentName = "BaseWeaponTurret",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    defName = "Gun_MiniTurret",
    label = "mini-turret gun",
    description = [[A simple automatic gun made to be mounted on a turret.]],
    statBases = {
      AccuracyTouch = 0.70,
      AccuracyShort = 0.64,
      AccuracyMedium = 0.41,
      AccuracyLong = 0.22,
      RangedWeapon_Cooldown = 4.8,
      DeteriorationRate = 0,
      Mass = 5,
      Flammability = 0,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_MiniTurret",
        warmupTime = 0,
        range = 28.9,
        ticksBetweenBurstShots = 8,
        burstShotCount = 2,
        consumeFuelPerShot = 1,
      },
    },
  },

  ["ThingDef:AutocannonTurret"] = {
    _ = {
      ParentName = "BuildingBase",
      Name = "AutocannonTurret",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    thingClass = "Building_TurretGun",
    altitudeLayer = "Building",
    size = {2, 2},
    statBases = {
      MaxHitPoints = 380,
      Flammability = 0.7,
      WorkToBuild = 15000,
      Mass = 100,
      Beauty = -20,
    },
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 0.5,
    terrainAffordanceNeeded = "Heavy",
  },

  ["ThingDef:Turret_Autocannon"] = {
    _ = {
      ParentName = "AutocannonTurret",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    defName = "Turret_Autocannon",
    label = "autocannon turret",
    description = [[A heavy automatic turret. Its large-caliber shells do heavy damage over significant ranges, but its barrel must be refurbished after use. It cannot fire at close-up targets, and may explode when damaged.]],
    statBases = {
      ShootingAccuracyTurret = 0.96,
    },
    costList = {
      Steel = 350,
      Plasteel = 40,
      ComponentIndustrial = 6,
    },
    comps = {
      CompProperties_Explosive = {
        wickTicks = 240,
        explosiveRadius = 5.9,
        explosiveDamageType = "Bomb",
        chanceNeverExplodeFromDamage = 0.5,
      },
      CompProperties_Forbiddable = {},
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 150,
      },
      CompProperties_Flickable = {},
      CompProperties_Breakdownable = {},
      CompProperties_Refuelable = {
        fuelLabel = "Shots until barrel change",
        fuelGizmoLabel = "Barrel durability",
        outOfFuelMessage = "Cannot shoot: Needs new barrel",
        fuelFilter = {
          thingDefs = {
            "Steel",
          },
        },
        fuelCapacity = 90,
        fuelMultiplier = 0.5,
        initialFuelPercent = 1,
        autoRefuelPercent = 0.5,
        showFuelGizmo = true,
        minimumFueledThreshold = 1,
        factorByDifficulty = true,
        consumeFuelOnlyWhenUsed = true,
        fuelIconPath = "UI/Overlays/Barrel",
      },
    },
    building = {
      turretGunDef = "Gun_AutocannonTurret",
      turretBurstCooldownTime = 3.5,
    },
    researchPrerequisites = {
      "HeavyTurrets",
    },
  },

  ["ThingDef:Bullet_AutocannonTurret"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    defName = "Bullet_AutocannonTurret",
    label = "autocannon shell",
  },

  ["ThingDef:Gun_AutocannonTurret"] = {
    _ = {
      ParentName = "BaseWeaponTurret",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    defName = "Gun_AutocannonTurret",
    label = "autocannon",
    description = [[A self-loading large-bore cannon designed to attach to a turret.]],
    statBases = {
      AccuracyTouch = 0.25,
      AccuracyShort = 0.65,
      AccuracyMedium = 0.60,
      AccuracyLong = 0.45,
      RangedWeapon_Cooldown = 3.5,
      DeteriorationRate = 0,
      Mass = 40,
      Flammability = 0,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_AutocannonTurret",
        warmupTime = 0,
        minRange = 8.9,
        range = 32.9,
        ticksBetweenBurstShots = 17,
        burstShotCount = 3,
        consumeFuelPerShot = 1,
      },
    },
  },

  ["ThingDef:Turret_Sniper"] = {
    _ = {
      ParentName = "AutocannonTurret",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    defName = "Turret_Sniper",
    label = "uranium slug turret",
    description = [[An armor-piercing turret. Its ultra-dense uranium shells can punch through heavy armor, but it requires new uranium slugs to be loaded after use. It's more accurate at longer ranges, and can't fire at all close up. May explode when damaged.]],
    statBases = {
      ShootingAccuracyTurret = 0.98,
    },
    costList = {
      Steel = 300,
      Plasteel = 30,
      Uranium = 60,
      ComponentIndustrial = 6,
    },
    comps = {
      CompProperties_Explosive = {
        wickTicks = 240,
        explosiveRadius = 5.9,
        explosiveDamageType = "Bomb",
        chanceNeverExplodeFromDamage = 0.5,
      },
      CompProperties_Forbiddable = {},
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 150,
      },
      CompProperties_Flickable = {},
      CompProperties_Breakdownable = {},
      CompProperties_Refuelable = {
        fuelLabel = "Shots until rearm",
        fuelGizmoLabel = "Uranium slugs",
        outOfFuelMessage = "Cannot shoot: No slugs",
        fuelFilter = {
          thingDefs = {
            "Uranium",
          },
        },
        fuelCapacity = 30,
        fuelMultiplier = 0.3333,
        initialFuelPercent = 1,
        autoRefuelPercent = 0.5,
        showFuelGizmo = true,
        minimumFueledThreshold = 1,
        factorByDifficulty = true,
        consumeFuelOnlyWhenUsed = true,
        fuelIconPath = "UI/Overlays/Barrel",
      },
    },
    building = {
      turretGunDef = "Gun_TurretSniper",
      turretBurstCooldownTime = 3.2,
    },
    researchPrerequisites = {
      "SniperTurret",
    },
  },

  ["ThingDef:Bullet_TurretSniper"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    defName = "Bullet_TurretSniper",
    label = "uranium slug",
  },

  ["ThingDef:Gun_TurretSniper"] = {
    _ = {
      ParentName = "BaseWeaponTurret",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    defName = "Gun_TurretSniper",
    label = "uranium slug cannon",
    description = [[A self-loading uranium slug cannon designed to attach to a turret.]],
    statBases = {
      AccuracyTouch = 0.20,
      AccuracyShort = 0.30,
      AccuracyMedium = 0.40,
      AccuracyLong = 0.95,
      RangedWeapon_Cooldown = 4.0,
      DeteriorationRate = 0,
      Mass = 40,
      Flammability = 0,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_TurretSniper",
        warmupTime = 0,
        minRange = 11.9,
        range = 45.9,
        burstShotCount = 1,
        consumeFuelPerShot = 1,
      },
    },
  },

  ["ThingDef:Turret_Mortar"] = {
    _ = {
      ParentName = "BaseArtilleryBuilding",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    defName = "Turret_Mortar",
    label = "mortar",
    description = [[A manned mortar that launches all kinds of shells. While it can inflict devastating damage, the mortar's inherent inaccuracy makes it more useful for attacking large fortifications than groups of enemies in the field.]],
    comps = {
      CompProperties_Explosive = {
        wickTicks = 240,
        explosiveRadius = 4.9,
        explosiveDamageType = "Bomb",
      },
    },
    terrainAffordanceNeeded = "Heavy",
    building = {
      turretGunDef = "Artillery_Mortar",
      buildingTags = {
        "Artillery_BaseDestroyer",
        "Artillery_MannedMortar",
      },
    },
  },

  ["ThingDef:Artillery_Mortar"] = {
    _ = {
      ParentName = "BaseArtilleryWeapon",
      DefCategory = "ThingDef",
      FileName = "Buildings_Security_Turrets.xml",
      DLC = "Core",
    },
    defName = "Artillery_Mortar",
    label = "mortar",
    description = [[Mortar launcher. Lobs bombs over walls. Very inaccurate but long-ranged.]],
    weaponTags = {
      "Artillery_BaseDestroyer",
    },
    verbs = {
      {
        warmupTime = 4.0,
        forcedMissRadius = 13,
        requireLineOfSight = false,
        minRange = 29.9,
        range = 500,
        burstShotCount = 1,
        targetParams = {
          canTargetLocations = true,
        },
      },
    },
    comps = {
      CompProperties_ChangeableProjectile = {},
    },
    building = {
      fixedStorageSettings = {
        filter = {
          categories = {
            "MortarShells",
          },
        },
      },
      defaultStorageSettings = {
        filter = {
          categories = {
            "MortarShells",
          },
          disallowedThingDefs = {
            "Shell_Firefoam",
            "Shell_AntigrainWarhead",
          },
        },
      },
    },
  },

  ["ThingDef:Ship_Beam"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Ship.xml",
      DLC = "Core",
    },
    defName = "Ship_Beam",
    label = "ship structural beam",
    description = [[A structural beam around which a starship can be constructed. Includes all the necessary conduits and transit pipes for communications, power, and materials transport.]],
    thingClass = "Building",
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    statBases = {
      WorkToBuild = 8000,
      MaxHitPoints = 400,
      Flammability = 0,
    },
    size = {2, 6},
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTransmitter",
        transmitsPower = true,
      },
      CompProperties_ShipPart = {},
    },
    costList = {
      Steel = 200,
      Plasteel = 40,
      ComponentIndustrial = 3,
      ComponentSpacer = 1,
    },
    terrainAffordanceNeeded = "Heavy",
    researchPrerequisites = {
      "ShipBasics",
    },
  },

  ["ThingDef:Ship_CryptosleepCasket"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Ship.xml",
      DLC = "Core",
    },
    defName = "Ship_CryptosleepCasket",
    label = "ship cryptosleep casket",
    description = [[A cryptosleep casket hardened against the dangers of space. Capable of maintaining a person in cryptosleep for centuries and surviving atmospheric re-entry.]],
    thingClass = "Building_CryptosleepCasket",
    researchPrerequisites = {
      "ShipCryptosleep",
    },
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 42,
    fillPercent = 0.5,
    statBases = {
      WorkToBuild = 8000,
      MaxHitPoints = 200,
      Flammability = 0,
    },
    size = {1, 2},
    hasInteractionCell = true,
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTransmitter",
        transmitsPower = true,
      },
      CompProperties_ShipPart = {},
      CompProperties_Explosive = {
        explosiveRadius = 2.66,
        explosiveDamageType = "Flame",
      },
      CompProperties_EmptyStateGraphic = {
        graphicData = {
          texPath = "Things/Building/Ship/ShipCryptosleepCasketOpenDoor",
          graphicClass = "Graphic_Multi",
          drawSize = {1, 2},
        },
      },
    },
    building = {
      isPlayerEjectable = true,
    },
    costList = {
      Steel = 120,
      Uranium = 14,
      ComponentIndustrial = 3,
      ComponentSpacer = 3,
    },
    terrainAffordanceNeeded = "Heavy",
  },

  ["ThingDef:Ship_ComputerCore"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Ship.xml",
      DLC = "Core",
    },
    defName = "Ship_ComputerCore",
    label = "ship computer core",
    description = [[A computer core housing a machine persona who can guide a starship through any challenge during a multi-decade starflight.]],
    thingClass = "Building_ShipComputerCore",
    researchPrerequisites = {
      "ShipComputerCore",
    },
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    statBases = {
      WorkToBuild = 16000,
      MaxHitPoints = 150,
      Flammability = 0,
    },
    size = {2, 2},
    comps = {
      CompProperties_ShipPart = {},
      CompProperties_Power = {
        compClass = "CompPowerTransmitter",
        transmitsPower = true,
      },
    },
    costList = {
      Steel = 150,
      ComponentSpacer = 4,
      Gold = 70,
      AIPersonaCore = 1,
    },
    terrainAffordanceNeeded = "Heavy",
  },

  ["ThingDef:Ship_Reactor"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Ship.xml",
      DLC = "Core",
    },
    defName = "Ship_Reactor",
    label = "ship reactor",
    description = [[Powers a ship on its journey between stars. Takeoff requires a long powerup process that is likely to attract raiders.]],
    thingClass = "Building_ShipReactor",
    researchPrerequisites = {
      "ShipReactor",
    },
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    statBases = {
      WorkToBuild = 65000,
      MaxHitPoints = 500,
      Flammability = 0,
    },
    size = {6, 7},
    costList = {
      Steel = 350,
      Plasteel = 280,
      Uranium = 70,
      ComponentSpacer = 8,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerPlant",
        basePowerConsumption = -1000,
        transmitsPower = true,
      },
      CompProperties_ShipPart = {},
      CompProperties_Hibernatable = {
        incidentTargetWhileStarting = "Map_RaidBeacon",
        sustainerActive = "ShipReactor_Ambience",
      },
    },
    terrainAffordanceNeeded = "Heavy",
  },

  ["ThingDef:Ship_Engine"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Ship.xml",
      DLC = "Core",
    },
    defName = "Ship_Engine",
    label = "ship engine",
    description = [[A reactionless Johnson-Tanaka drive capable of launching a ship into orbit, and crawling across the vast expanses between stars.]],
    thingClass = "Building",
    researchPrerequisites = {
      "ShipEngine",
    },
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    statBases = {
      WorkToBuild = 50000,
      MaxHitPoints = 400,
      Flammability = 0,
    },
    size = {3, 4},
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTransmitter",
        transmitsPower = true,
      },
      CompProperties_ShipPart = {},
    },
    costList = {
      Steel = 260,
      Plasteel = 140,
      Uranium = 70,
      ComponentSpacer = 6,
    },
    terrainAffordanceNeeded = "Heavy",
  },

  ["ThingDef:Ship_SensorCluster"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Ship.xml",
      DLC = "Core",
    },
    defName = "Ship_SensorCluster",
    label = "sensor cluster",
    description = [[A multi-function sensor module. Can scan and signal across the void for communications, threat detection, deception, jamming, and other purposes.]],
    thingClass = "Building",
    researchPrerequisites = {
      "ShipSensorCluster",
    },
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    statBases = {
      WorkToBuild = 30000,
      MaxHitPoints = 100,
      Flammability = 0,
    },
    size = {2, 2},
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTransmitter",
        transmitsPower = true,
      },
      CompProperties_ShipPart = {},
    },
    costList = {
      Steel = 140,
      Gold = 4,
      ComponentIndustrial = 6,
      ComponentSpacer = 6,
    },
    terrainAffordanceNeeded = "Heavy",
  },

  ["ThingDef:PsychicEmanator"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Special.xml",
      DLC = "Core",
    },
    defName = "PsychicEmanator",
    label = "psychic emanator",
    description = [[An ancient device that projects a soothing psychic field around itself. This improves the mood of anyone nearby. Works through walls.]],
    thingCategories = {
      "BuildingsSpecial",
    },
    costList = {
      Steel = 50,
      ComponentSpacer = 6,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 200,
      },
      CompProperties_MoteEmitter = {
        mote = "Mote_PsychicEmanatorEffect",
        emissionInterval = 350,
      },
      CompProperties_Breakdownable = {},
      CompProperties_Flickable = {},
    },
    altitudeLayer = "Building",
    statBases = {
      MarketValue = 1300,
      MaxHitPoints = 100,
      Flammability = 0,
      Beauty = 0,
      Mass = 15,
      WorkToBuild = 2000,
    },
    fillPercent = 0.2,
    leaveResourcesWhenKilled = false,
    pathCost = 30,
    passability = "PassThroughOnly",
    minifiedDef = "MinifiedThing",
    tradeability = "Sellable",
    tradeTags = {
      "ExoticBuilding",
    },
  },

  ["ThingDef:VanometricPowerCell"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Special.xml",
      DLC = "Core",
    },
    defName = "VanometricPowerCell",
    label = "vanometric power cell",
    description = [[Generates free energy, forever, without using fuel. This technology is developed by archotechs, and is beyond even most glitterworld societies. While nobody knows exactly how it works, scholars believe it somehow extracts energy directly from fluctuations in the quantum foam.]],
    altitudeLayer = "Building",
    pathCost = 42,
    fillPercent = 0.4,
    passability = "PassThroughOnly",
    leaveResourcesWhenKilled = false,
    terrainAffordanceNeeded = "Medium",
    thingCategories = {
      "BuildingsSpecial",
    },
    statBases = {
      MarketValue = 1200,
      MaxHitPoints = 200,
      Flammability = 0,
      Mass = 15,
    },
    size = {1, 2},
    costList = {
      Steel = 100,
      ComponentSpacer = 6,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerPlant",
        basePowerConsumption = -1000,
        transmitsPower = true,
      },
      CompProperties_Glower = {
        glowRadius = 3,
        glowColor = {227, 233, 168, 0},
      },
    },
    minifiedDef = "MinifiedThing",
    tradeability = "Sellable",
    tradeTags = {
      "ExoticBuilding",
    },
  },

  ["ThingDef:InfiniteChemreactor"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Special.xml",
      DLC = "Core",
    },
    defName = "InfiniteChemreactor",
    label = "infinite chemreactor",
    description = [[Slowly generates chemfuel by a complex series of chemical reactions, using atoms extracted from the air.]],
    thingCategories = {
      "BuildingsSpecial",
    },
    costList = {
      Steel = 200,
      ComponentSpacer = 6,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 300,
      },
      CompProperties_Breakdownable = {},
      CompProperties_Flickable = {},
      CompProperties_Spawner = {
        requiresPower = true,
        thingToSpawn = "Chemfuel",
        spawnCount = 75,
        spawnIntervalRange = {
          min = 600000,
          max = 600000,
        },
        writeTimeLeftToSpawn = true,
        showMessageIfOwned = true,
      },
      CompProperties_Explosive = {
        explosiveRadius = 8,
        explosiveDamageType = "Flame",
      },
    },
    altitudeLayer = "Building",
    statBases = {
      MarketValue = 1500,
      MaxHitPoints = 200,
      Flammability = 1.0,
      Beauty = -10,
      Mass = 35,
      WorkToBuild = 8000,
    },
    size = {2, 2},
    fillPercent = 1.0,
    leaveResourcesWhenKilled = false,
    terrainAffordanceNeeded = "Medium",
    passability = "Impassable",
    minifiedDef = "MinifiedThing",
    tradeability = "Sellable",
    tradeTags = {
      "ExoticBuilding",
    },
  },

  ["ThingDef:DoorBase"] = {
    _ = {
      ParentName = "BuildingBase",
      Name = "DoorBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Structure.xml",
      DLC = "Core",
    },
    thingClass = "Building_Door",
    category = "Building",
    altitudeLayer = "DoorMoveable",
    fillPercent = 1,
    useHitPoints = true,
    statBases = {
      MaxHitPoints = 160,
      Flammability = 1.0,
    },
    leaveResourcesWhenKilled = false,
    terrainAffordanceNeeded = "Light",
    building = {
      isInert = true,
    },
    comps = {
      CompProperties_Forbiddable = {},
    },
  },

  ["ThingDef:Door"] = {
    _ = {
      ParentName = "DoorBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Structure.xml",
      DLC = "Core",
    },
    defName = "Door",
    label = "door",
    description = [[Divides rooms. Simple doors must be manually opened, which slows people down. The amount of slowdown depends on what the door is made of.]],
    statBases = {
      WorkToBuild = 850,
    },
  },

  ["ThingDef:Autodoor"] = {
    _ = {
      ParentName = "DoorBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Structure.xml",
      DLC = "Core",
    },
    defName = "Autodoor",
    label = "autodoor",
    description = [[Divides rooms. Powered operation allows people to move through the door without slowing down.]],
    statBases = {
      WorkToBuild = 1100,
    },
    costList = {
      Steel = 40,
      ComponentIndustrial = 2,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 50,
      },
      CompProperties_Breakdownable = {},
      CompProperties_Flickable = {},
    },
    researchPrerequisites = {
      "Autodoors",
    },
  },

  ["ThingDef:Wall"] = {
    _ = {
      ParentName = "BuildingBase",
      Name = "Wall",
      DefCategory = "ThingDef",
      FileName = "Buildings_Structure.xml",
      DLC = "Core",
    },
    defName = "Wall",
    label = "wall",
    description = [[An impassable wall. Capable of holding up a roof.]],
    thingClass = "Building",
    category = "Building",
    statBases = {
      MaxHitPoints = 300,
      WorkToBuild = 135,
      Flammability = 1.0,
      MeditationFocusStrength = 0.22,
    },
    leaveResourcesWhenKilled = false,
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    terrainAffordanceNeeded = "Heavy",
    building = {
      isInert = true,
    },
    comps = {
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Minimal",
        },
      },
    },
  },

  ["ThingDef:Column"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Structure.xml",
      DLC = "Core",
    },
    defName = "Column",
    label = "column",
    description = [[A column capable of holding a roof. Does not block sight or movement and looks quite nice.]],
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    fillPercent = 0.25,
    pathCost = 0,
    statBases = {
      MaxHitPoints = 160,
      WorkToBuild = 750,
      Mass = 10,
      Flammability = 1.0,
      Beauty = 5,
    },
    building = {
      isInert = true,
    },
  },

  ["ThingDef:Campfire"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Temperature.xml",
      DLC = "Core",
    },
    defName = "Campfire",
    label = "campfire",
    description = [[Cooks meals and produces heat, and burns out after a few days. As with all heat sources, it must be placed indoors so it has a closed space to heat. Refuelable.]],
    thingClass = "Building_WorkTable",
    category = "Building",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 42,
    fillPercent = 0.20,
    statBases = {
      MaxHitPoints = 80,
      WorkToBuild = 200,
      Flammability = 0,
      WorkTableWorkSpeedFactor = 0.5,
      MeditationFocusStrength = 0.0,
    },
    costList = {
      WoodLog = 20,
    },
    leaveResourcesWhenKilled = false,
    comps = {
      CompProperties_Refuelable = {
        fuelConsumptionRate = 10.0,
        fuelCapacity = 20.0,
        fuelConsumptionPerTickInRain = 0.0006,
        fuelFilter = {
          thingDefs = {
            "WoodLog",
          },
        },
        initialFuelPercent = 1,
        showAllowAutoRefuelToggle = true,
      },
      CompProperties_Glower = {
        glowRadius = 10,
        glowColor = {252, 187, 113, 0},
      },
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 21,
        heatPushMaxTemperature = 28,
      },
      CompProperties_FireOverlay = {
        fireSize = 1,
      },
      {
        compClass = "CompGatherSpot",
      },
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Flame",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_Lit",
            },
            offset = 0.12,
          },
          {
            _ = {
              Class = "FocusStrengthOffset_BuildingDefsLit",
            },
            defs = {
              "Campfire",
              "TorchLamp",
              "Brazier",
            },
            offsetPerBuilding = 0.02,
            radius = 9.9,
            maxBuildings = 8,
            explanationKey = "MeditationFocusPerFlame",
            explanationKeyAbstract = "MeditationFocusPerFlameAbstract",
          },
        },
      },
    },
    hasInteractionCell = true,
    building = {
      isMealSource = true,
      artificialForMeditationPurposes = false,
    },
  },

  ["ThingDef:PassiveCooler"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Temperature.xml",
      DLC = "Core",
    },
    defName = "PassiveCooler",
    label = "passive cooler",
    description = [[A traditional unpowered cooler that works by water evaporation. Must be regularly replenished with wood. Not efficient enough to refrigerate food.]],
    category = "Building",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 30,
    fillPercent = 0.40,
    statBases = {
      MaxHitPoints = 80,
      WorkToBuild = 200,
      Flammability = 1,
    },
    costList = {
      WoodLog = 50,
    },
    leaveResourcesWhenKilled = false,
    comps = {
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = -11,
        heatPushMinTemperature = 17,
      },
      CompProperties_Refuelable = {
        fuelConsumptionRate = 10.0,
        fuelCapacity = 50.0,
        fuelFilter = {
          thingDefs = {
            "WoodLog",
          },
        },
        initialFuelPercent = 1,
        showAllowAutoRefuelToggle = true,
      },
    },
    researchPrerequisites = {
      "PassiveCooler",
    },
  },

  ["ThingDef:Heater"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Temperature.xml",
      DLC = "Core",
    },
    defName = "Heater",
    label = "heater",
    description = [[A device that converts electricity into heat. It can automatically turn itself on or off to reach a specific target temperature.]],
    thingClass = "Building_Heater",
    minifiedDef = "MinifiedThing",
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 30,
    fillPercent = 0.4,
    thingCategories = {
      "BuildingsTemperature",
    },
    statBases = {
      WorkToBuild = 1000,
      MaxHitPoints = 100,
      Mass = 6,
      Flammability = 0.5,
    },
    costList = {
      Steel = 50,
      ComponentIndustrial = 1,
    },
    terrainAffordanceNeeded = "Light",
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 175,
        shortCircuitInRain = true,
      },
      CompProperties_Flickable = {},
      CompProperties_TempControl = {
        energyPerSecond = 21,
      },
      CompProperties_Glower = {
        glowRadius = 3,
        glowColor = {255, 150, 100, 0},
      },
      CompProperties_Breakdownable = {},
    },
    researchPrerequisites = {
      "Electricity",
    },
  },

  ["ThingDef:Cooler"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Temperature.xml",
      DLC = "Core",
    },
    defName = "Cooler",
    label = "cooler",
    description = [[An air-cooling machine that fits into a wall. Cool air comes out one side, while hot exhaust comes out the other. Can be used to cool down rooms during summer, or to create a walk-in freezer.]],
    thingClass = "Building_Cooler",
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    statBases = {
      WorkToBuild = 1600,
      MaxHitPoints = 100,
      Flammability = 0.7,
    },
    costList = {
      Steel = 90,
      ComponentIndustrial = 3,
    },
    terrainAffordanceNeeded = "Medium",
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 200,
      },
      CompProperties_Flickable = {},
      CompProperties_TempControl = {
        energyPerSecond = -21,
      },
      CompProperties_Breakdownable = {},
    },
    researchPrerequisites = {
      "AirConditioning",
    },
  },

  ["ThingDef:Vent"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Temperature.xml",
      DLC = "Core",
    },
    defName = "Vent",
    label = "vent",
    description = [[A vent for equalizing the temperature between two rooms without allowing people to walk between them.]],
    thingClass = "Building_Vent",
    altitudeLayer = "Building",
    passability = "Impassable",
    fillPercent = 1,
    statBases = {
      WorkToBuild = 400,
      MaxHitPoints = 100,
      Flammability = 1.0,
    },
    costList = {
      Steel = 30,
    },
    terrainAffordanceNeeded = "Medium",
    researchPrerequisites = {
      "ComplexFurniture",
    },
    comps = {
      CompProperties_Flickable = {
        commandTexture = "UI/Commands/Vent",
        commandLabelKey = "CommandDesignateOpenCloseVentLabel",
        commandDescKey = "CommandDesignateOpenCloseVentDesc",
      },
    },
  },

  ["ThingDef:ArtifactBase"] = {
    _ = {
      ParentName = "ResourceBase",
      Name = "ArtifactBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Artifacts.xml",
      DLC = "Core",
    },
    thingClass = "ThingWithComps",
    thingCategories = {
      "Artifacts",
    },
    tradeTags = {
      "Artifact",
    },
    statBases = {
      Mass = 0.5,
    },
    comps = {
      CompProperties_Usable = {
        useJob = "UseArtifact",
        useLabel = "Activate",
      },
      CompProperties_UseEffect = {
        compClass = "CompUseEffect_DestroySelf",
      },
    },
  },

  ["ThingDef:PsychicAnimalPulser"] = {
    _ = {
      ParentName = "ArtifactBase",
      DefCategory = "ThingDef",
      FileName = "Items_Artifacts.xml",
      DLC = "Core",
    },
    defName = "PsychicAnimalPulser",
    label = "psychic animal pulser",
    description = [[A one-use broad-wave psychic effector. The psychic pulse fills lower minds with terrifying imagery, driving all animals in the region into a manhunting rage. Animals currently under your control will not be affected.]],
    stackLimit = 1,
    useHitPoints = true,
    statBases = {
      MarketValue = 700,
      MaxHitPoints = 80,
    },
    comps = {
      CompProperties_Targetable = {
        compClass = "CompTargetable_AllAnimalsOnTheMap",
        psychicSensitiveTargetsOnly = true,
        doCameraShake = true,
        moteOnTarget = "Mote_PsycastPsychicEffect",
        moteOnUsed = "Mote_PsycastAreaEffect",
        moteOnUsedScale = 10,
        ignorePlayerFactionPawns = true,
      },
      {
        compClass = "CompTargetEffect_Manhunter",
      },
      CompProperties_TargetEffect_GoodwillImpact = {
        goodwillImpact = -200,
      },
      CompProperties_UseEffectArtifact = {
        sound = "PsychicAnimalPulserCast",
      },
    },
  },

  ["ThingDef:PsychicSoothePulser"] = {
    _ = {
      ParentName = "ArtifactBase",
      DefCategory = "ThingDef",
      FileName = "Items_Artifacts.xml",
      DLC = "Core",
    },
    defName = "PsychicSoothePulser",
    label = "psychic soothe pulser",
    description = [[A one-use broad-wave psychic effector. The psychic pulse induces self-satisfying perceptual distortions, giving a temporary mood boost to everyone in the region.]],
    stackLimit = 1,
    useHitPoints = true,
    statBases = {
      MarketValue = 600,
      MaxHitPoints = 80,
    },
    comps = {
      CompProperties_Targetable = {
        compClass = "CompTargetable_AllPawnsOnTheMap",
        psychicSensitiveTargetsOnly = true,
        doCameraShake = true,
        moteOnTarget = "Mote_PsycastPsychicEffect",
        moteOnUsed = "Mote_PsycastAreaEffect",
        moteOnUsedScale = 10,
      },
      {
        compClass = "CompTargetEffect_MoodBoost",
      },
      CompProperties_UseEffectArtifact = {
        sound = "PsychicSoothePulserCast",
      },
    },
  },

  ["ThingDef:ResourceVerbBase"] = {
    _ = {
      Name = "ResourceVerbBase",
      ParentName = "ResourceBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Exotic.xml",
      DLC = "Core",
    },
    comps = {
      {
        compClass = "CompEquippable",
      },
    },
  },

  ["ThingDef:AIPersonaCore"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Exotic.xml",
      DLC = "Core",
    },
    defName = "AIPersonaCore",
    label = "persona core",
    description = [[A hyper-advanced computer core that houses a peak-human-equivalent machine persona. In its isolated state, the core is dormant. Installed in a proper support structure, however, it can become a mind of great power.]],
    stackLimit = 1,
    useHitPoints = true,
    statBases = {
      MarketValue = 4000,
      MaxHitPoints = 100,
      Mass = 2,
      Flammability = 0.2,
    },
    thingCategories = {
      "Items",
    },
    tradeability = "Sellable",
    tradeTags = {
      "ExoticMisc",
    },
  },

  ["ThingDef:MechSerumBase"] = {
    _ = {
      ParentName = "ResourceBase",
      Name = "MechSerumBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Exotic.xml",
      DLC = "Core",
    },
    thingClass = "ThingWithComps",
    useHitPoints = true,
    statBases = {
      MaxHitPoints = 80,
      Mass = 0.2,
      DeteriorationRate = 2.0,
      Flammability = 0.2,
    },
    tradeTags = {
      "ExoticMisc",
    },
    comps = {
      CompProperties_UseEffectPlaySound = {
        soundOnUsed = "MechSerumUsed",
      },
    },
  },

  ["ThingDef:MechSerumHealer"] = {
    _ = {
      ParentName = "MechSerumBase",
      DefCategory = "ThingDef",
      FileName = "Items_Exotic.xml",
      DLC = "Core",
    },
    defName = "MechSerumHealer",
    label = "healer mech serum",
    description = [[A one-use super-dose of mechanites tuned to heal health conditions. The mechanites will target and heal the single worst health condition affecting someone at any given time. Works even on health conditions that would otherwise be incurable. The mechanites can even transmute themselves into organic matter, forming new limbs or organs as needed.]],
    stackLimit = 10,
    statBases = {
      MarketValue = 1300,
    },
    thingCategories = {
      "Items",
    },
    tradeability = "Sellable",
    comps = {
      CompProperties_Usable = {
        useJob = "UseItem",
        useLabel = "Use healer mech serum",
        useDuration = 600,
      },
      CompProperties_UseEffect = {
        compClass = "CompUseEffect_FixWorstHealthCondition",
      },
      CompProperties_UseEffect = {
        compClass = "CompUseEffect_DestroySelf",
      },
    },
  },

  ["ThingDef:MechSerumResurrector"] = {
    _ = {
      ParentName = "MechSerumBase",
      DefCategory = "ThingDef",
      FileName = "Items_Exotic.xml",
      DLC = "Core",
    },
    defName = "MechSerumResurrector",
    label = "resurrector mech serum",
    description = [[A one-use super-dose of mechanites tuned to resurrect the dead. Administered to a corpse, mechanites repair broken-down tissues and kickstart the body back to life. Unfortunately, the resurrected sometimes come back with brain damage, blindness, or progressive psychosis. Outcomes are better when the mechanites are administered to a fresher body. If a body is preserved, it can even be resurrected long after death.]],
    stackLimit = 10,
    statBases = {
      MarketValue = 1700,
    },
    thingCategories = {
      "Items",
    },
    tradeability = "Sellable",
    comps = {
      CompProperties_Usable = {
        useJob = "UseItem",
        useLabel = "Use resurrector mech serum",
        useDuration = 0,
      },
      CompProperties_Targetable = {
        compClass = "CompTargetable_SingleCorpse",
        fleshCorpsesOnly = true,
        nonDessicatedCorpsesOnly = true,
      },
      {
        compClass = "CompTargetEffect_Resurrect",
      },
    },
  },

  ["ThingDef:TechprofSubpersonaCore"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Exotic.xml",
      DLC = "Core",
    },
    defName = "TechprofSubpersonaCore",
    label = "techprof subpersona core",
    thingClass = "ThingWithComps",
    description = [[A small AI core housing a low-grade subpersona specialized in teaching technology. When used, the AI will teach you the technology you're currently researching, instantly and for free. Can only be used once.]],
    stackLimit = 1,
    useHitPoints = true,
    statBases = {
      MarketValue = 1000,
      MaxHitPoints = 100,
      Mass = 2.0,
      Flammability = 0.2,
    },
    thingCategories = {
      "Items",
    },
    tradeability = "Sellable",
    tradeTags = {
      "ExoticMisc",
    },
    comps = {
      CompProperties_Usable = {
        useJob = "UseItem",
        useLabel = "Use techprof subpersona core",
      },
      CompProperties_UseEffect = {
        compClass = "CompUseEffect_FinishRandomResearchProject",
      },
      CompProperties_UseEffect = {
        compClass = "CompUseEffect_DestroySelf",
      },
    },
  },

  ["ThingDef:ThrumboHorn"] = {
    _ = {
      ParentName = "ResourceVerbBase",
      DefCategory = "ThingDef",
      FileName = "Items_Exotic.xml",
      DLC = "Core",
    },
    defName = "ThrumboHorn",
    label = "thrumbo horn",
    description = [[A thrumbo's horn. It's razor-sharp, rock-hard, and priceless in most markets. This is a true trophy, as well as a deadly melee weapon.]],
    statBases = {
      MarketValue = 800,
      MaxHitPoints = 150,
      Mass = 3,
      Flammability = 0.4,
      DeteriorationRate = 0.5,
    },
    stackLimit = 10,
    tools = {
      {
        label = "point",
        capacities = {
          "Scratch",
          "Stab",
        },
        power = 28,
        cooldownTime = 2.6,
      },
      {
        label = "base",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
    thingCategories = {
      "Items",
    },
    tradeTags = {
      "ExoticMisc",
    },
  },

  ["ThingDef:ElephantTusk"] = {
    _ = {
      ParentName = "ResourceVerbBase",
      DefCategory = "ThingDef",
      FileName = "Items_Exotic.xml",
      DLC = "Core",
    },
    defName = "ElephantTusk",
    label = "elephant tusk",
    description = [[An elephant's tusk. It is very durable and valuable. While somewhat unwieldy as a melee weapon, it can still be deadly.]],
    statBases = {
      MarketValue = 80,
      MaxHitPoints = 150,
      Mass = 1.8,
      Flammability = 0.9,
      DeteriorationRate = 0.5,
    },
    stackLimit = 10,
    tools = {
      {
        label = "point",
        capacities = {
          "Scratch",
          "Stab",
        },
        power = 18.2,
        cooldownTime = 2.6,
      },
      {
        label = "base",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
        chanceFactor = 0.5,
      },
    },
    thingCategories = {
      "Items",
    },
    tradeTags = {
      "ExoticMisc",
    },
  },

  ["ThingDef:MealBase"] = {
    _ = {
      Name = "MealBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Food.xml",
      DLC = "Core",
    },
    thingClass = "ThingWithComps",
    category = "Item",
    useHitPoints = true,
    statBases = {
      MaxHitPoints = 50,
      Flammability = 1.0,
      Beauty = 0,
      Mass = 0.44,
      DeteriorationRate = 10,
    },
    altitudeLayer = "Item",
    stackLimit = 10,
    thingCategories = {
      "FoodMeals",
    },
    comps = {
      CompProperties_Forbiddable = {},
      CompProperties_Ingredients = {},
      CompProperties_FoodPoisonable = {},
    },
    pathCost = 14,
    ingestible = {
      foodType = {
        "Meal",
      },
      optimalityOffsetHumanlikes = 16,
    },
  },

  ["ThingDef:MealSurvivalPack"] = {
    _ = {
      ParentName = "MealBase",
      DefCategory = "ThingDef",
      FileName = "Items_Food.xml",
      DLC = "Core",
    },
    defName = "MealSurvivalPack",
    label = "packaged survival meal",
    description = [[A high-quality packaged meal, manufactured for use in survival situations. While it never rots, it can still deteriorate if left outside. Great for traveling.]],
    statBases = {
      DeteriorationRate = 0.25,
      MarketValue = 24,
      Mass = 0.3,
      WorkToMake = 450,
      Nutrition = 0.9,
    },
    ingestible = {
      preferability = "MealSimple",
      optimalityOffsetHumanlikes = -5,
      optimalityOffsetFeedingAnimals = -10,
    },
  },

  ["ThingDef:MealNutrientPaste"] = {
    _ = {
      ParentName = "MealBase",
      DefCategory = "ThingDef",
      FileName = "Items_Food.xml",
      DLC = "Core",
    },
    defName = "MealNutrientPaste",
    label = "nutrient paste meal",
    description = [[A synthetic mixture of protein, carbohydrates, and vitamins, amino acids and minerals. Everything the body needs, and absolutely disgusting.]],
    statBases = {
      MarketValue = 10,
      Nutrition = 0.9,
    },
    ingestible = {
      preferability = "MealAwful",
      tasteThought = "AteAwfulMeal",
    },
    tradeability = "Buyable",
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 0.75,
        rotDestroys = true,
      },
    },
  },

  ["ThingDef:MealCooked"] = {
    _ = {
      ParentName = "MealBase",
      Name = "MealCooked",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Food.xml",
      DLC = "Core",
    },
    tradeability = "Buyable",
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 4,
        rotDestroys = true,
      },
    },
  },

  ["ThingDef:MealSimple"] = {
    _ = {
      ParentName = "MealCooked",
      DefCategory = "ThingDef",
      FileName = "Items_Food.xml",
      DLC = "Core",
    },
    defName = "MealSimple",
    label = "simple meal",
    description = [[A simple meal quickly cooked from one main ingredient.]],
    statBases = {
      MarketValue = 15,
      WorkToMake = 300,
      Nutrition = 0.9,
    },
    ingestible = {
      preferability = "MealSimple",
    },
  },

  ["ThingDef:MealFine"] = {
    _ = {
      ParentName = "MealCooked",
      DefCategory = "ThingDef",
      FileName = "Items_Food.xml",
      DLC = "Core",
    },
    defName = "MealFine",
    label = "fine meal",
    description = [[A complex dish assembled with care from a variety of ingredients.]],
    statBases = {
      MarketValue = 20,
      WorkToMake = 450,
      Nutrition = 0.9,
    },
    ingestible = {
      preferability = "MealFine",
      tasteThought = "AteFineMeal",
    },
  },

  ["ThingDef:MealLavish"] = {
    _ = {
      ParentName = "MealCooked",
      DefCategory = "ThingDef",
      FileName = "Items_Food.xml",
      DLC = "Core",
    },
    defName = "MealLavish",
    label = "lavish meal",
    description = [[A masterpiece of the culinary arts, this meal nourishes the body, mind, and soul.]],
    statBases = {
      MarketValue = 40,
      WorkToMake = 800,
      Nutrition = 1,
    },
    ingestible = {
      preferability = "MealLavish",
      tasteThought = "AteLavishMeal",
    },
  },

  ["ThingDef:Kibble"] = {
    _ = {
      ParentName = "OrganicProductBase",
      DefCategory = "ThingDef",
      FileName = "Items_Food.xml",
      DLC = "Core",
    },
    defName = "Kibble",
    label = "kibble",
    description = [[Animal feed made from mixed meat and plant sources. Humans can eat it, but they really, really don't like it.]],
    thingCategories = {
      "Foods",
    },
    statBases = {
      MarketValue = 1.1,
      Mass = 0.015,
      Nutrition = 0.05,
      FoodPoisonChanceFixedHuman = 0.02,
    },
    ingestible = {
      foodType = {
        "Kibble",
      },
      preferability = "RawBad",
      tasteThought = "AteKibble",
      optimalityOffsetHumanlikes = -30,
      optimalityOffsetFeedingAnimals = 15,
    },
    comps = {
      CompProperties_Ingredients = {},
    },
  },

  ["ThingDef:Pemmican"] = {
    _ = {
      ParentName = "OrganicProductBase",
      DefCategory = "ThingDef",
      FileName = "Items_Food.xml",
      DLC = "Core",
    },
    defName = "Pemmican",
    label = "pemmican",
    description = [[A preserved mashed mixture of fat and plant food. Tastes bland, but not offensive. It lasts a very long time without refrigeration. Great for traveling.]],
    thingClass = "ThingWithComps",
    thingCategories = {
      "Foods",
    },
    statBases = {
      MarketValue = 1.4,
      Mass = 0.018,
      Flammability = 0.6,
      WorkToMake = 700,
      DeteriorationRate = 2,
      Nutrition = 0.05,
    },
    ingestible = {
      foodType = {
        "Meal",
      },
      preferability = "MealSimple",
      optimalityOffsetHumanlikes = 6,
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 70,
        rotDestroys = true,
      },
      CompProperties_Ingredients = {},
      CompProperties_FoodPoisonable = {},
    },
  },

  ["ThingDef:Chocolate"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Luxury.xml",
      DLC = "Core",
    },
    defName = "Chocolate",
    label = "chocolate",
    description = [[A delicious preparation of cocoa seeds ground together with sugar and vanilla. It fulfills the need for recreation, but it is not very nutritious.]],
    statBases = {
      MaxHitPoints = 60,
      MarketValue = 3,
      Mass = 0.075,
      Flammability = 1.0,
      DeteriorationRate = 8,
      Nutrition = 0.1,
    },
    thingCategories = {
      "Foods",
    },
    ingestible = {
      preferability = "DesperateOnly",
      foodType = {
        "Processed",
      },
      joy = 0.10,
      joyKind = "Gluttonous",
    },
  },

  ["ThingDef:Milk"] = {
    _ = {
      ParentName = "OrganicProductBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "Milk",
    label = "milk",
    description = [[Milk from an animal.]],
    statBases = {
      MarketValue = 3.1,
      Mass = 0.045,
      MaxHitPoints = 60,
      Flammability = 0.2,
      Nutrition = 0.05,
      FoodPoisonChanceFixedHuman = 0.02,
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 14,
        rotDestroys = true,
      },
    },
    ingestible = {
      preferability = "RawTasty",
      foodType = {
        "AnimalProduct",
        "Fluid",
      },
    },
    thingCategories = {
      "AnimalProductRaw",
    },
  },

  ["ThingDef:InsectJelly"] = {
    _ = {
      ParentName = "OrganicProductBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "InsectJelly",
    label = "insect jelly",
    description = [[Jelly stored and used as food by oversized insects. It is smooth, rich, and fulfills the recreation need of those who consume it. Because of its unique biological properties, it can nourish almost any creature and never rots.]],
    statBases = {
      MarketValue = 8.0,
      Mass = 0.025,
      Nutrition = 0.05,
      FoodPoisonChanceFixedHuman = 0.02,
    },
    ingestible = {
      foodType = {
        "AnimalProduct",
      },
      preferability = "MealFine",
      joy = 0.08,
      joyKind = "Gluttonous",
      canAutoSelectAsFoodForCaravan = false,
    },
    thingCategories = {
      "AnimalProductRaw",
    },
  },

  ["ThingDef:EggBase"] = {
    _ = {
      Abstract = true,
      Name = "EggBase",
      ParentName = "OrganicProductBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    ingestible = {
      foodType = {
        "AnimalProduct",
      },
      tasteThought = "AteRawFood",
    },
    statBases = {
      Mass = 0.15,
      MaxHitPoints = 20,
      DeteriorationRate = 2,
      Flammability = 0.7,
      Nutrition = 0.25,
      FoodPoisonChanceFixedHuman = 0.02,
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 15,
        rotDestroys = true,
        disableIfHatcher = true,
      },
    },
  },

  ["ThingDef:EggUnfertBase"] = {
    _ = {
      Abstract = true,
      Name = "EggUnfertBase",
      ParentName = "EggBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    ingestible = {
      preferability = "RawBad",
    },
    thingCategories = {
      "EggsUnfertilized",
    },
  },

  ["ThingDef:EggFertBase"] = {
    _ = {
      Abstract = true,
      Name = "EggFertBase",
      ParentName = "EggBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    ingestible = {
      preferability = "DesperateOnly",
    },
    thingCategories = {
      "EggsFertilized",
    },
    comps = {
      CompProperties_TemperatureRuinable = {
        minSafeTemperature = 0,
        maxSafeTemperature = 50,
        progressPerDegreePerTick = 0.00003,
      },
    },
  },

  ["ThingDef:EggChickenUnfertilized"] = {
    _ = {
      ParentName = "EggUnfertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggChickenUnfertilized",
    label = "chicken egg (unfert.)",
    description = [[An unfertilized chicken egg. It can be eaten raw, but it's much, much better cooked.]],
    statBases = {
      MarketValue = 7.0,
    },
  },

  ["ThingDef:EggChickenFertilized"] = {
    _ = {
      ParentName = "EggFertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggChickenFertilized",
    label = "chicken egg (fert.)",
    description = [[A fertilized chicken egg. If all goes well, it should hatch into a chick. It can be eaten raw, but it's much better cooked.]],
    statBases = {
      MarketValue = 7.0,
    },
    comps = {
      CompProperties_Hatcher = {
        hatcherDaystoHatch = 3.5,
        hatcherPawn = "Chicken",
      },
    },
  },

  ["ThingDef:EggCobraFertilized"] = {
    _ = {
      ParentName = "EggFertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggCobraFertilized",
    label = "cobra egg (fert.)",
    description = [[A fertilized cobra egg. If all goes well, it should hatch into a baby cobra. It can be eaten raw, but it's much better cooked.]],
    statBases = {
      MarketValue = 40.0,
    },
    comps = {
      CompProperties_Hatcher = {
        hatcherDaystoHatch = 4.5,
        hatcherPawn = "Cobra",
      },
    },
  },

  ["ThingDef:EggIguanaFertilized"] = {
    _ = {
      ParentName = "EggFertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggIguanaFertilized",
    label = "iguana egg (fert.)",
    description = [[A fertilized iguana egg. If all goes well, it should hatch into a baby iguana. It can be eaten raw, but it's much better cooked.]],
    statBases = {
      MarketValue = 25.0,
    },
    comps = {
      CompProperties_Hatcher = {
        hatcherDaystoHatch = 3.5,
        hatcherPawn = "Iguana",
      },
    },
  },

  ["ThingDef:EggTortoiseFertilized"] = {
    _ = {
      ParentName = "EggFertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggTortoiseFertilized",
    label = "tortoise egg (fert.)",
    description = [[A fertilized tortoise egg. If all goes well, it should hatch into a baby tortoise. It can be eaten raw, but it's much better cooked.]],
    statBases = {
      MarketValue = 23.0,
    },
    comps = {
      CompProperties_Hatcher = {
        hatcherDaystoHatch = 3.5,
        hatcherPawn = "Tortoise",
      },
    },
  },

  ["ThingDef:EggCassowaryFertilized"] = {
    _ = {
      ParentName = "EggFertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggCassowaryFertilized",
    label = "cassowary egg (fert.)",
    description = [[A fertilized cassowary egg. If all goes well, it should hatch into a baby cassowary. It can be eaten raw, but it's much better cooked.]],
    statBases = {
      MarketValue = 19.0,
    },
    comps = {
      CompProperties_Hatcher = {
        hatcherDaystoHatch = 7,
        hatcherPawn = "Cassowary",
      },
    },
  },

  ["ThingDef:EggEmuFertilized"] = {
    _ = {
      ParentName = "EggFertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggEmuFertilized",
    label = "emu egg (fert.)",
    description = [[A fertilized emu egg. If all goes well, it should hatch into a baby emu. It can be eaten raw, but it's much better cooked.]],
    statBases = {
      MarketValue = 18.0,
    },
    comps = {
      CompProperties_Hatcher = {
        hatcherDaystoHatch = 6,
        hatcherPawn = "Emu",
      },
    },
  },

  ["ThingDef:EggOstrichFertilized"] = {
    _ = {
      ParentName = "EggFertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggOstrichFertilized",
    label = "ostrich egg (fert.)",
    description = [[A fertilized ostrich egg. If all goes well, it should hatch into a baby ostrich. It can be eaten raw, but it's much better cooked.]],
    statBases = {
      MarketValue = 23.0,
    },
    comps = {
      CompProperties_Hatcher = {
        hatcherDaystoHatch = 8,
        hatcherPawn = "Ostrich",
      },
    },
  },

  ["ThingDef:EggTurkeyFertilized"] = {
    _ = {
      ParentName = "EggFertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggTurkeyFertilized",
    label = "turkey egg (fert.)",
    description = [[A fertilized turkey egg. If all goes well, it should hatch into a baby turkey. It can be eaten raw, but it's much better cooked.]],
    statBases = {
      MarketValue = 11.0,
    },
    comps = {
      CompProperties_Hatcher = {
        hatcherDaystoHatch = 5,
        hatcherPawn = "Turkey",
      },
    },
  },

  ["ThingDef:EggDuckUnfertilized"] = {
    _ = {
      ParentName = "EggUnfertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggDuckUnfertilized",
    label = "duck egg (unfert.)",
    description = [[An unfertilized duck egg. It can be eaten raw, but it's much, much better cooked.]],
    statBases = {
      MarketValue = 7.0,
    },
  },

  ["ThingDef:EggDuckFertilized"] = {
    _ = {
      ParentName = "EggFertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggDuckFertilized",
    label = "duck egg (fert.)",
    description = [[A fertilized duck egg. If all goes well, it should hatch into a duckling. It can be eaten raw, but it's much better cooked.]],
    statBases = {
      MarketValue = 7.0,
    },
    comps = {
      CompProperties_Hatcher = {
        hatcherDaystoHatch = 3.5,
        hatcherPawn = "Duck",
      },
    },
  },

  ["ThingDef:EggGooseUnfertilized"] = {
    _ = {
      ParentName = "EggUnfertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggGooseUnfertilized",
    label = "goose egg (unfert.)",
    description = [[An unfertilized goose egg. It can be eaten raw, but it's much, much better cooked.]],
    statBases = {
      MarketValue = 9.0,
    },
  },

  ["ThingDef:EggGooseFertilized"] = {
    _ = {
      ParentName = "EggFertBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_AnimalProduct.xml",
      DLC = "Core",
    },
    defName = "EggGooseFertilized",
    label = "goose egg (fert.)",
    description = [[A fertilized goose egg. If all goes well, it should hatch into a baby goose. It can be eaten raw, but it's much better cooked.]],
    statBases = {
      MarketValue = 11.0,
    },
    comps = {
      CompProperties_Hatcher = {
        hatcherDaystoHatch = 6.5,
        hatcherPawn = "Goose",
      },
    },
  },

  ["ThingDef:ResourceBase"] = {
    _ = {
      Name = "ResourceBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Base.xml",
      DLC = "Core",
    },
    thingClass = "ThingWithComps",
    category = "Item",
    useHitPoints = true,
    altitudeLayer = "Item",
    stackLimit = 75,
    statBases = {
      Beauty = -4,
    },
    comps = {
      CompProperties_Forbiddable = {},
    },
    pathCost = 14,
  },

  ["ThingDef:MedicineBase"] = {
    _ = {
      ParentName = "ResourceBase",
      Name = "MedicineBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Manufactured.xml",
      DLC = "Core",
    },
    thingClass = "Medicine",
    stackLimit = 25,
    statBases = {
      MaxHitPoints = 60,
    },
    thingCategories = {
      "Medicine",
    },
  },

  ["ThingDef:MedicineHerbal"] = {
    _ = {
      ParentName = "MedicineBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Manufactured.xml",
      DLC = "Core",
    },
    defName = "MedicineHerbal",
    label = "herbal medicine",
    description = [[A pack of herbal concoctions extracted from the healroot plant. It is less potent than industrial pharmaceuticals, but much better than nothing.]],
    statBases = {
      MarketValue = 10,
      Mass = 0.35,
      Flammability = 1.3,
      MedicalPotency = 0.60,
      MedicalQualityMax = 0.70,
      DeteriorationRate = 6,
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 150,
        rotDestroys = true,
      },
    },
  },

  ["ThingDef:MedicineIndustrial"] = {
    _ = {
      ParentName = "MedicineBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Manufactured.xml",
      DLC = "Core",
    },
    defName = "MedicineIndustrial",
    label = "medicine",
    description = [[A kit of industrial-era medical equipment. It contains basic drugs, tools for suturing and bone setting, diagnostic devices, and various pads and fluids.]],
    statBases = {
      MarketValue = 18,
      Mass = 0.50,
      Flammability = 0.7,
      MedicalPotency = 1.00,
      MedicalQualityMax = 1.00,
      DeteriorationRate = 2,
      WorkToMake = 700,
    },
    costList = {
      MedicineHerbal = 1,
      Neutroamine = 1,
      Cloth = 3,
    },
    recipeMaker = {
      workSpeedStat = "DrugSynthesisSpeed",
      workSkill = "Intellectual",
      recipeUsers = {
        "DrugLab",
      },
      researchPrerequisite = "MedicineProduction",
      skillRequirements = {
        Crafting = 4,
        Intellectual = 4,
      },
    },
  },

  ["ThingDef:MedicineUltratech"] = {
    _ = {
      ParentName = "MedicineBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Manufactured.xml",
      DLC = "Core",
    },
    defName = "MedicineUltratech",
    label = "glitterworld medicine",
    description = [[A kit of advanced ultra-tech medical supplies, probably manufactured on a distant glitterworld. It contains advanced polymorphic drugs, nanite diagnostic and healing assisters, a mini-imager, and various multi-use tools.]],
    statBases = {
      MarketValue = 50,
      Mass = 0.50,
      Flammability = 0.7,
      MedicalPotency = 1.60,
      MedicalQualityMax = 1.30,
      DeteriorationRate = 2.0,
    },
    tradeTags = {
      "ExoticMisc",
    },
  },

  ["ThingDef:ComponentIndustrial"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Manufactured.xml",
      DLC = "Core",
    },
    defName = "ComponentIndustrial",
    label = "component",
    description = [[Miscellaneous gears, capacitors, circuit boards, tubes, wheels, sensors, wires, chips, processors, and other electronic and industrial parts. Necessary for assembling complex machines or electronics.]],
    stackLimit = 50,
    statBases = {
      MaxHitPoints = 70,
      MarketValue = 32,
      Mass = 0.6,
      Flammability = 0.6,
      DeteriorationRate = 2.0,
    },
    thingCategories = {
      "Manufactured",
    },
  },

  ["ThingDef:ComponentSpacer"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Manufactured.xml",
      DLC = "Core",
    },
    defName = "ComponentSpacer",
    label = "advanced component",
    description = [[Advanced computing and energy-directing machinery, miniaturized and hardened for the most demanding applications.]],
    stackLimit = 50,
    statBases = {
      MaxHitPoints = 70,
      MarketValue = 200,
      Mass = 0.6,
      Flammability = 0.6,
      DeteriorationRate = 2.0,
    },
    thingCategories = {
      "Manufactured",
    },
    tradeTags = {
      "ExoticMisc",
    },
  },

  ["ThingDef:Neutroamine"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Manufactured.xml",
      DLC = "Core",
    },
    defName = "Neutroamine",
    label = "neutroamine",
    description = [[A synthetic precursor chemical. While it is useless on its own, many drugs require neutroamine as an ingredient.]],
    stackLimit = 150,
    statBases = {
      MaxHitPoints = 50,
      MarketValue = 6,
      Mass = 0.02,
      Flammability = 0.7,
      DeteriorationRate = 1.0,
    },
    thingCategories = {
      "Manufactured",
    },
  },

  ["ThingDef:Chemfuel"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Manufactured.xml",
      DLC = "Core",
    },
    defName = "Chemfuel",
    label = "chemfuel",
    description = [[A volatile liquid chemical. Used to fuel engines and rockets, or to transmute into propellant for projectiles, or as an incendiary weapon.]],
    stackLimit = 150,
    statBases = {
      MaxHitPoints = 50,
      MarketValue = 2.3,
      Mass = 0.05,
      Flammability = 2.0,
      DeteriorationRate = 1.0,
    },
    thingCategories = {
      "Manufactured",
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 1.1,
        explosiveDamageType = "Flame",
        explosiveExpandPerStackcount = 0.037,
        startWickOnDamageTaken = {
          "Flame",
        },
        startWickHitPointsPercent = 0.333,
        preExplosionSpawnThingDef = "Filth_Fuel",
        preExplosionSpawnChance = 1,
        wickTicks = { ["<"]=70, [">"]=150 },
      },
    },
  },

  ["ThingDef:OrganicProductBase"] = {
    _ = {
      Abstract = true,
      Name = "OrganicProductBase",
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    statBases = {
      MaxHitPoints = 60,
      Flammability = 1.0,
      DeteriorationRate = 6,
      Mass = 0.03,
    },
  },

  ["ThingDef:PlantFoodRawBase"] = {
    _ = {
      Abstract = true,
      Name = "PlantFoodRawBase",
      ParentName = "OrganicProductBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    ingestible = {
      preferability = "RawBad",
      tasteThought = "AteRawFood",
    },
    statBases = {
      Nutrition = 0.05,
      FoodPoisonChanceFixedHuman = 0.02,
    },
    thingCategories = {
      "PlantFoodRaw",
    },
  },

  ["ThingDef:RawPotatoes"] = {
    _ = {
      ParentName = "PlantFoodRawBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    defName = "RawPotatoes",
    label = "potatoes",
    description = [[Raw potatoes.]],
    statBases = {
      MarketValue = 1.1,
    },
    ingestible = {
      foodType = {
        "VegetableOrFruit",
      },
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 30,
        rotDestroys = true,
      },
    },
  },

  ["ThingDef:RawFungus"] = {
    _ = {
      ParentName = "PlantFoodRawBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    defName = "RawFungus",
    label = "raw fungus",
    description = [[Raw fungus.]],
    statBases = {
      MarketValue = 1.1,
    },
    ingestible = {
      foodType = {
        "VegetableOrFruit",
      },
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 30,
        rotDestroys = true,
      },
    },
  },

  ["ThingDef:RawRice"] = {
    _ = {
      ParentName = "PlantFoodRawBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    defName = "RawRice",
    label = "rice",
    description = [[Raw rice.]],
    statBases = {
      MarketValue = 1.1,
    },
    ingestible = {
      foodType = {
        "Seed",
      },
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 40,
        rotDestroys = true,
      },
    },
  },

  ["ThingDef:RawAgave"] = {
    _ = {
      ParentName = "PlantFoodRawBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    defName = "RawAgave",
    label = "agave fruit",
    description = [[Raw agave fruit.]],
    statBases = {
      MarketValue = 1.1,
    },
    ingestible = {
      foodType = {
        "VegetableOrFruit",
      },
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 25,
        rotDestroys = true,
      },
    },
  },

  ["ThingDef:RawCorn"] = {
    _ = {
      ParentName = "PlantFoodRawBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    defName = "RawCorn",
    label = "corn",
    description = [[Raw corn.]],
    statBases = {
      MarketValue = 1.1,
    },
    ingestible = {
      foodType = {
        "VegetableOrFruit",
      },
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 60,
        rotDestroys = true,
      },
    },
  },

  ["ThingDef:RawBerries"] = {
    _ = {
      ParentName = "PlantFoodRawBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    defName = "RawBerries",
    label = "berries",
    description = [[Assorted berries. Nice to eat, even when raw.]],
    statBases = {
      MarketValue = 1.2,
      Mass = 0.027,
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 14,
        rotDestroys = true,
      },
    },
    ingestible = {
      preferability = "RawTasty",
      tasteThought = {},
      foodType = {
        "VegetableOrFruit",
      },
    },
  },

  ["ThingDef:RoughPlantBase"] = {
    _ = {
      ParentName = "OrganicProductBase",
      Name = "RoughPlantBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    ingestible = {
      foodType = {
        "Plant",
      },
      preferability = "DesperateOnlyForHumanlikes",
    },
    statBases = {
      Nutrition = 0.05,
    },
  },

  ["ThingDef:Hay"] = {
    _ = {
      ParentName = "RoughPlantBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    defName = "Hay",
    label = "hay",
    description = [[Nutrient-rich grasses and shoots, harvested and compacted for storage. Hay is good animal feed, but inedible for humans.]],
    stackLimit = 200,
    statBases = {
      MarketValue = 0.6,
      Mass = 0.014,
      Flammability = 1.5,
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 60,
        rotDestroys = true,
      },
    },
    thingCategories = {
      "Foods",
    },
    ingestible = {
      optimalityOffsetFeedingAnimals = 7,
    },
  },

  ["ThingDef:RawHops"] = {
    _ = {
      ParentName = "RoughPlantBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    defName = "RawHops",
    label = "hops",
    description = [[Raw hops. A flavoring and preserving agent that is necessary for making beer.]],
    statBases = {
      MarketValue = 1.3,
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 30,
        rotDestroys = true,
      },
    },
    thingCategories = {
      "PlantMatter",
    },
    ingestible = {
      preferability = "DesperateOnly",
    },
  },

  ["ThingDef:PsychoidLeaves"] = {
    _ = {
      ParentName = "RoughPlantBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    defName = "PsychoidLeaves",
    label = "psychoid leaves",
    description = [[Raw cut leaves of a psychoid plant. Can be refined into various form of the stimulant drug psychite.]],
    statBases = {
      MarketValue = 1.9,
      Flammability = 1.3,
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 30,
        rotDestroys = true,
      },
    },
    thingCategories = {
      "PlantMatter",
    },
    ingestible = {
      preferability = "DesperateOnly",
    },
  },

  ["ThingDef:SmokeleafLeaves"] = {
    _ = {
      ParentName = "RoughPlantBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_RawPlant.xml",
      DLC = "Core",
    },
    defName = "SmokeleafLeaves",
    label = "smokeleaf leaves",
    description = [[Raw cut leaves of a smokeleaf plant. Can be rolled into smokeable joints at a crafting spot.]],
    statBases = {
      MarketValue = 1.6,
      Flammability = 1.3,
    },
    comps = {
      CompProperties_Rottable = {
        daysToRotStart = 30,
        rotDestroys = true,
      },
    },
    thingCategories = {
      "PlantMatter",
    },
    ingestible = {
      preferability = "DesperateOnly",
    },
  },

  ["ThingDef:ShellBase"] = {
    _ = {
      Name = "ShellBase",
      ParentName = "ResourceBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    stackLimit = 25,
    statBases = {
      MaxHitPoints = 60,
      MarketValue = 55,
      Mass = 1.25,
      Flammability = 1.0,
      DeteriorationRate = 1.5,
    },
    thingCategories = {
      "MortarShells",
    },
    tradeTags = {
      "MortarShell",
    },
  },

  ["ThingDef:MakeableShellBase"] = {
    _ = {
      Name = "MakeableShellBase",
      ParentName = "ShellBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      effectWorking = "Cook",
      soundWorking = "Recipe_Machining",
      workAmount = 800,
      targetCountAdjustment = 5,
      workSkill = "Crafting",
      recipeUsers = {
        "TableMachining",
      },
      skillRequirements = {
        Crafting = 4,
      },
    },
  },

  ["ThingDef:Shell_HighExplosive"] = {
    _ = {
      ParentName = "MakeableShellBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Shell_HighExplosive",
    label = "high-explosive shell",
    description = [[A shell filled with high explosives. Can be fired from mortars or installed as a trap. Explodes when damaged.]],
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 2.9,
        explosiveDamageType = "Bomb",
        explosiveExpandPerStackcount = 0.4,
        startWickHitPointsPercent = 0.7,
        wickTicks = { ["<"]=30, [">"]=60 },
      },
    },
    costList = {
      Steel = 25,
      Chemfuel = 15,
    },
    recipeMaker = {
      researchPrerequisite = "Mortars",
    },
  },

  ["ThingDef:Bullet_Shell_HighExplosive"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Bullet_Shell_HighExplosive",
    label = "high-explosive shell",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Shell_Incendiary"] = {
    _ = {
      ParentName = "MakeableShellBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Shell_Incendiary",
    label = "incendiary shell",
    description = [[A shell filled with flammable gel and a small explosive charge. Starts fires when detonated. Can be fired from mortars or installed as a trap. Explodes when damaged.]],
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 2.9,
        explosiveDamageType = "Flame",
        explosiveExpandPerStackcount = 0.4,
        startWickHitPointsPercent = 0.7,
        wickTicks = { ["<"]=30, [">"]=60 },
      },
    },
    costList = {
      Steel = 20,
      Chemfuel = 20,
    },
    recipeMaker = {
      researchPrerequisite = "Mortars",
    },
  },

  ["ThingDef:Bullet_Shell_Incendiary"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Bullet_Shell_Incendiary",
    label = "incendiary shell",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Shell_EMP"] = {
    _ = {
      ParentName = "MakeableShellBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Shell_EMP",
    label = "EMP shell",
    description = [[A shell filled with batteries and antennas, for generating an electromagnetic pulse when detonated. Electromagnetic pulses temporarily disable electrical devices and mechanoids. Can be fired from mortars or installed as a trap. Explodes when damaged.]],
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 11.9,
        explosiveDamageType = "EMP",
        explosiveExpandPerStackcount = 0.4,
        startWickHitPointsPercent = 0.7,
        wickTicks = { ["<"]=30, [">"]=60 },
      },
    },
    costList = {
      Steel = 25,
      ComponentIndustrial = 2,
    },
    recipeMaker = {
      researchPrerequisite = "MicroelectronicsBasics",
    },
  },

  ["ThingDef:Bullet_Shell_EMP"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Bullet_Shell_EMP",
    label = "EMP shell",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Shell_Smoke"] = {
    _ = {
      ParentName = "MakeableShellBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Shell_Smoke",
    label = "Smoke shell",
    description = [[A shell that generates a cloud of smoke when detonated, obscuring incoming shots and preventing turrets from locking on. Can be fired from mortars or installed as a trap. Explodes when damaged.]],
    comps = {
      CompProperties_Explosive = {
        explosiveDamageType = "Smoke",
        explosiveRadius = 11,
        postExplosionSpawnThingDef = "Gas_Smoke",
        postExplosionSpawnChance = 1,
        postExplosionSpawnThingCount = 1,
        wickTicks = { ["<"]=30, [">"]=60 },
      },
    },
    costList = {
      Steel = 35,
    },
    recipeMaker = {
      researchPrerequisite = "Mortars",
    },
  },

  ["ThingDef:Bullet_Shell_Smoke"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Bullet_Shell_Smoke",
    label = "Smoke shell",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Shell_Firefoam"] = {
    _ = {
      ParentName = "MakeableShellBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Shell_Firefoam",
    label = "firefoam shell",
    description = [[A pressurized shell filled with fire-retardant foam. Can be fired from mortars or installed as a trap. Explodes when damaged.]],
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 9.9,
        explosiveDamageType = "Extinguish",
        explosiveExpandPerStackcount = 0.4,
        startWickHitPointsPercent = 0.7,
        postExplosionSpawnThingDef = "Filth_FireFoam",
        postExplosionSpawnChance = 1,
        postExplosionSpawnThingCount = 3,
        applyDamageToExplosionCellsNeighbors = true,
        explosionEffect = "ExtinguisherExplosion",
        wickTicks = { ["<"]=30, [">"]=60 },
      },
    },
    costList = {
      Steel = 35,
    },
    recipeMaker = {
      researchPrerequisite = "Firefoam",
    },
  },

  ["ThingDef:Bullet_Shell_Firefoam"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Bullet_Shell_Firefoam",
    label = "firefoam shell",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Shell_AntigrainWarhead"] = {
    _ = {
      ParentName = "ShellBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Shell_AntigrainWarhead",
    label = "antigrain warhead",
    description = [[An ultra-tech warhead powered by a grain of antimatter. Usually used by spacecraft or glitterworld war machines, it creates a huge explosion and starts fires around the target. Can be fired from mortars or installed as a trap. Explodes when damaged.]],
    tradeability = "Sellable",
    statBases = {
      MarketValue = 1200,
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 14.9,
        explosiveDamageType = "BombSuper",
        explosiveExpandPerStackcount = 0.4,
        startWickHitPointsPercent = 0.7,
        chanceToStartFire = 0.22,
        damageFalloff = true,
        explosionEffect = "GiantExplosion",
        explosionSound = "Explosion_GiantBomb",
        wickTicks = { ["<"]=60, [">"]=120 },
      },
    },
  },

  ["ThingDef:Bullet_Shell_AntigrainWarhead"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Shell.xml",
      DLC = "Core",
    },
    defName = "Bullet_Shell_AntigrainWarhead",
    label = "antigrain warhead",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Silver"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "Silver",
    label = "silver",
    description = [[This metal is mostly used as a commodity currency. It can also be used for making decorations.]],
    useHitPoints = false,
    statBases = {
      MarketValue = 1,
      Mass = 0.008,
      StuffPower_Armor_Sharp = 0.72,
      StuffPower_Armor_Blunt = 0.36,
      StuffPower_Armor_Heat = 0.36,
      StuffPower_Insulation_Cold = 3,
      StuffPower_Insulation_Heat = 0,
      SharpDamageMultiplier = 0.85,
      BluntDamageMultiplier = 1.0,
    },
    thingCategories = {
      "ResourcesRaw",
    },
    stackLimit = 500,
    smeltable = true,
    stuffProps = {
      categories = {
        "Metallic",
      },
      statOffsets = {
        Beauty = 6,
      },
      statFactors = {
        MaxHitPoints = 0.7,
        Flammability = 0.4,
        Beauty = 2,
      },
    },
    terrainAffordanceNeeded = "Medium",
  },

  ["ThingDef:Gold"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "Gold",
    label = "gold",
    description = [[The most seductive metal of them all. While it is too soft to be of much practical use, it is strikingly beautiful and never tarnishes. Millions have died in attempting to feed the endless human thirst for gold.]],
    useHitPoints = false,
    statBases = {
      MarketValue = 10,
      RoyalFavorValue = 0.015,
      Mass = 0.008,
      StuffPower_Armor_Sharp = 0.72,
      StuffPower_Armor_Blunt = 0.36,
      StuffPower_Armor_Heat = 0.36,
      StuffPower_Insulation_Cold = 3,
      StuffPower_Insulation_Heat = 0,
      SharpDamageMultiplier = 0.75,
      BluntDamageMultiplier = 1.0,
    },
    thingCategories = {
      "ResourcesRaw",
    },
    stackLimit = 500,
    smeltable = true,
    stuffProps = {
      categories = {
        "Metallic",
      },
      statOffsets = {
        Beauty = 20,
      },
      statFactors = {
        MaxHitPoints = 0.6,
        Flammability = 0.4,
        Beauty = 4,
        WorkToMake = 0.9,
        WorkToBuild = 0.9,
        MeleeWeapon_CooldownMultiplier = 1.0,
      },
    },
    terrainAffordanceNeeded = "Medium",
  },

  ["ThingDef:Steel"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "Steel",
    label = "steel",
    description = [[An iron-carbon metal alloy used for building a huge variety of structures, weapons, and machines.]],
    statBases = {
      MarketValue = 1.9,
      Mass = 0.5,
      StuffPower_Armor_Sharp = 0.9,
      StuffPower_Armor_Blunt = 0.45,
      StuffPower_Armor_Heat = 0.60,
      StuffPower_Insulation_Cold = 3,
      StuffPower_Insulation_Heat = 0,
      SharpDamageMultiplier = 1,
      BluntDamageMultiplier = 1,
    },
    useHitPoints = false,
    thingCategories = {
      "ResourcesRaw",
    },
    smeltable = true,
    stuffProps = {
      categories = {
        "Metallic",
      },
      statFactors = {
        MaxHitPoints = 1,
        Beauty = 1,
        Flammability = 0.4,
      },
    },
    terrainAffordanceNeeded = "Medium",
  },

  ["ThingDef:Plasteel"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "Plasteel",
    label = "plasteel",
    description = [[Advanced spacer tech structural material. Plasteel is extremely strong due to its unique molecular structure.]],
    useHitPoints = false,
    statBases = {
      MarketValue = 9,
      Mass = 0.25,
      StuffPower_Armor_Sharp = 1.14,
      StuffPower_Armor_Blunt = 0.55,
      StuffPower_Armor_Heat = 0.65,
      StuffPower_Insulation_Cold = 3,
      StuffPower_Insulation_Heat = 0,
      SharpDamageMultiplier = 1.1,
      BluntDamageMultiplier = 0.9,
    },
    thingCategories = {
      "ResourcesRaw",
    },
    smeltable = true,
    stuffProps = {
      categories = {
        "Metallic",
      },
      statFactors = {
        MaxHitPoints = 2.8,
        Beauty = 1,
        Flammability = 0,
        WorkToMake = 2.2,
        WorkToBuild = 2.2,
        MeleeWeapon_CooldownMultiplier = 0.8,
      },
    },
    terrainAffordanceNeeded = "Medium",
  },

  ["ThingDef:WoodLog"] = {
    _ = {
      ParentName = "ResourceVerbBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "WoodLog",
    label = "wood",
    description = [[Wood from trees or other fibrous plants. Useful for building structures and weapons. It is a good fuel for campfires and generators, and can be refined into chemfuel. In a pinch, a piece of wood can be used as a weapon or a leg.]],
    statBases = {
      MarketValue = 1.2,
      MaxHitPoints = 150,
      Mass = 0.4,
      Flammability = 1.0,
      DeteriorationRate = 0.5,
      StuffPower_Armor_Sharp = 0.54,
      StuffPower_Armor_Blunt = 0.54,
      StuffPower_Armor_Heat = 0.40,
      StuffPower_Insulation_Cold = 8,
      StuffPower_Insulation_Heat = 4,
      SharpDamageMultiplier = 0.40,
      BluntDamageMultiplier = 0.9,
    },
    stuffProps = {
      categories = {
        "Woody",
      },
      statFactors = {
        MaxHitPoints = 0.65,
        Beauty = 1,
        Flammability = 1,
        WorkToMake = 0.7,
        WorkToBuild = 0.7,
        DoorOpenSpeed = 1.2,
      },
    },
    thingCategories = {
      "ResourcesRaw",
    },
    tools = {
      {
        label = "log",
        capacities = {
          "Blunt",
        },
        power = 10,
        cooldownTime = 2,
      },
    },
    terrainAffordanceNeeded = "Light",
  },

  ["ThingDef:Uranium"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "Uranium",
    label = "uranium",
    description = [[A dark, heavy metal. While it is best known as a fuel for nuclear devices, its extreme density and hardness also make it good for making certain weapons, armor, and ammunition.]],
    useHitPoints = false,
    statBases = {
      MarketValue = 6,
      Mass = 1,
      StuffPower_Armor_Sharp = 1.08,
      StuffPower_Armor_Blunt = 0.54,
      StuffPower_Armor_Heat = 0.65,
      StuffPower_Insulation_Cold = 3,
      StuffPower_Insulation_Heat = 0,
      SharpDamageMultiplier = 1.1,
      BluntDamageMultiplier = 1.5,
    },
    thingCategories = {
      "ResourcesRaw",
    },
    smeltable = true,
    stuffProps = {
      categories = {
        "Metallic",
      },
      statFactors = {
        MaxHitPoints = 2.5,
        WorkToMake = 1.9,
        WorkToBuild = 1.9,
        Beauty = 0.5,
        Flammability = 0.0,
        DoorOpenSpeed = 0.75,
        MeleeWeapon_CooldownMultiplier = 1.10,
      },
    },
    terrainAffordanceNeeded = "Medium",
  },

  ["ThingDef:Jade"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "Jade",
    label = "jade",
    description = [[A hard, green stone. Because of its beauty and rarity, jade is often used for ornaments and decorations. Its hardness and density also makes it a good material for blunt weapons.]],
    useHitPoints = false,
    statBases = {
      MarketValue = 5,
      Mass = 0.5,
      StuffPower_Armor_Sharp = 0.9,
      StuffPower_Armor_Blunt = 0.45,
      StuffPower_Armor_Heat = 0.54,
      StuffPower_Insulation_Cold = 3,
      StuffPower_Insulation_Heat = 0,
      BluntDamageMultiplier = 1.5,
    },
    thingCategories = {
      "ResourcesRaw",
    },
    smeltable = false,
    stuffProps = {
      categories = {
        "Stony",
      },
      statOffsets = {
        Beauty = 10,
      },
      statFactors = {
        MaxHitPoints = 0.5,
        WorkToMake = 1.4,
        WorkToBuild = 5.0,
        Beauty = 2.5,
        Flammability = 0,
        MeleeWeapon_CooldownMultiplier = 1.3,
      },
    },
    terrainAffordanceNeeded = "Heavy",
  },

  ["ThingDef:Cloth"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "Cloth",
    label = "cloth",
    description = [[Cloth woven from organic fibers.]],
    statBases = {
      StuffPower_Armor_Sharp = 0.36,
      StuffPower_Armor_Blunt = 0,
      StuffPower_Armor_Heat = 0.18,
      StuffPower_Insulation_Cold = 18,
      StuffPower_Insulation_Heat = 18,
      MaxHitPoints = 80,
      MarketValue = 1.5,
      Mass = 0.026,
      Flammability = 1.2,
      DeteriorationRate = 4,
    },
    stuffProps = {
      statFactors = {
        Flammability = 1.2,
        Beauty = 1,
      },
      categories = {
        "Fabric",
      },
    },
    thingCategories = {
      "Textiles",
    },
    comps = {
      {
        compClass = "CompColorable",
      },
    },
  },

  ["ThingDef:Synthread"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "Synthread",
    label = "synthread",
    description = [[Spacer-tech synthetic fabric designed for making ordinary clothes. It is soft, light, strong, and insulates well.]],
    statBases = {
      MaxHitPoints = 150,
      MarketValue = 4,
      Mass = 0.025,
      Flammability = 0.7,
      DeteriorationRate = 3,
      StuffPower_Armor_Sharp = 0.94,
      StuffPower_Armor_Blunt = 0.26,
      StuffPower_Armor_Heat = 0.90,
      StuffPower_Insulation_Cold = 22,
      StuffPower_Insulation_Heat = 22,
    },
    stuffProps = {
      categories = {
        "Fabric",
      },
      statFactors = {
        Flammability = 0.7,
        MaxHitPoints = 1.3,
        Beauty = 2.3,
      },
    },
    thingCategories = {
      "Textiles",
    },
  },

  ["ThingDef:DevilstrandCloth"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "DevilstrandCloth",
    label = "devilstrand",
    description = [[Fabric spun from microfibers extracted from devilstrand mushrooms. It is very tough, good at insulating, and protects exceptionally well against flame.]],
    statBases = {
      MaxHitPoints = 100,
      MarketValue = 5.5,
      Mass = 0.032,
      Flammability = 0.4,
      DeteriorationRate = 3,
      StuffPower_Armor_Sharp = 1.40,
      StuffPower_Armor_Blunt = 0.36,
      StuffPower_Armor_Heat = 3.00,
      StuffPower_Insulation_Cold = 20,
      StuffPower_Insulation_Heat = 24,
    },
    stuffProps = {
      categories = {
        "Fabric",
      },
      statFactors = {
        Flammability = 0.4,
        MaxHitPoints = 1.3,
        Beauty = 3.2,
      },
    },
    thingCategories = {
      "Textiles",
    },
    comps = {
      {
        compClass = "CompColorable",
      },
    },
  },

  ["ThingDef:Hyperweave"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "Hyperweave",
    label = "hyperweave",
    description = [[Nano-fibers woven into sheets molecule-by-molecule using specialized production mechanites. While it flexes freely most of the time, it stiffens to absorb blows as they land, and is incredibly difficult to break. The secrets of its production are known only to the most advanced glitterworld cultures.]],
    statBases = {
      MaxHitPoints = 200,
      MarketValue = 9,
      Mass = 0.038,
      Flammability = 0.4,
      DeteriorationRate = 1.0,
      StuffPower_Armor_Sharp = 2.00,
      StuffPower_Armor_Blunt = 0.54,
      StuffPower_Armor_Heat = 2.88,
      StuffPower_Insulation_Cold = 26,
      StuffPower_Insulation_Heat = 26,
    },
    stuffProps = {
      categories = {
        "Fabric",
      },
      statFactors = {
        Flammability = 0.4,
        MaxHitPoints = 2.4,
        Beauty = 5.5,
      },
    },
    thingCategories = {
      "Textiles",
    },
    tradeTags = {
      "ExoticMisc",
    },
  },

  ["ThingDef:WoolBase"] = {
    _ = {
      ParentName = "ResourceBase",
      Name = "WoolBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    stackLimit = 100,
    statBases = {
      MaxHitPoints = 90,
      MarketValue = 2.7,
      Mass = 0.028,
      Flammability = 0.4,
      DeteriorationRate = 3.4,
      StuffPower_Armor_Sharp = 0.36,
      StuffPower_Armor_Blunt = 0.00,
      StuffPower_Armor_Heat = 1.10,
    },
    stuffProps = {
      statFactors = {
        Flammability = 1.7,
        Beauty = 1.5,
      },
      categories = {
        "Fabric",
      },
    },
    thingCategories = {
      "Textiles",
    },
  },

  ["ThingDef:WoolMegasloth"] = {
    _ = {
      ParentName = "WoolBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "WoolMegasloth",
    label = "megasloth wool",
    description = [[While somewhat coarse, megasloth wool's long fibers make it very strong. It is exceptionally warm.]],
    statBases = {
      StuffPower_Armor_Sharp = 0.80,
      StuffPower_Insulation_Cold = 34,
      StuffPower_Insulation_Heat = 12,
    },
  },

  ["ThingDef:WoolMuffalo"] = {
    _ = {
      ParentName = "WoolBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "WoolMuffalo",
    label = "muffalo wool",
    description = [[Soft, light and provides very good insulation. Muffalo wool clothes can keep the body warm even in very cold conditions.]],
    statBases = {
      StuffPower_Insulation_Cold = 30,
      StuffPower_Insulation_Heat = 12,
    },
  },

  ["ThingDef:WoolAlpaca"] = {
    _ = {
      ParentName = "WoolBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "WoolAlpaca",
    label = "alpaca wool",
    description = [[The remarkably soft wool of an alpaca. It is very warm.]],
    statBases = {
      DeteriorationRate = 2.6,
      StuffPower_Insulation_Cold = 28,
      StuffPower_Insulation_Heat = 16,
    },
  },

  ["ThingDef:WoolBison"] = {
    _ = {
      ParentName = "WoolBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "WoolBison",
    label = "bison wool",
    description = [[Thick and coarse wool of a bison. Quite warm.]],
    statBases = {
      StuffPower_Insulation_Cold = 26,
      StuffPower_Insulation_Heat = 12,
    },
  },

  ["ThingDef:WoolSheep"] = {
    _ = {
      ParentName = "WoolBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff.xml",
      DLC = "Core",
    },
    defName = "WoolSheep",
    label = "sheep wool",
    description = [[Sheep's wool. It provides good insulation.]],
    statBases = {
      StuffPower_Insulation_Cold = 26,
      StuffPower_Insulation_Heat = 10,
    },
  },

  ["ThingDef:LeatherBase"] = {
    _ = {
      Abstract = true,
      Name = "LeatherBase",
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    description = [[Tanned, dried, scraped skin. A good traditional material for making clothes and bags.]],
    statBases = {
      MaxHitPoints = 60,
      DeteriorationRate = 2,
      Mass = 0.03,
      Flammability = 1,
      MarketValue = 2.1,
      StuffPower_Armor_Sharp = 0.81,
      StuffPower_Armor_Blunt = 0.24,
      StuffPower_Armor_Heat = 1.5,
      StuffPower_Insulation_Cold = 16,
      StuffPower_Insulation_Heat = 16,
    },
    thingCategories = {
      "Leathers",
    },
    stuffProps = {
      categories = {
        "Leathery",
      },
      statFactors = {
        MaxHitPoints = 1.3,
      },
    },
  },

  ["ThingDef:Leather_Plain"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Plain",
    label = "plainleather",
  },

  ["ThingDef:Leather_Dog"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Dog",
    label = "dog leather",
    statBases = {
      MarketValue = 2.0,
      StuffPower_Insulation_Cold = 14,
    },
  },

  ["ThingDef:Leather_Wolf"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Wolf",
    label = "wolfskin",
    description = [[A soft furry pelt harvested from a wolf-like creature. It is difficult to pierce and insulates well against cold.]],
    statBases = {
      MarketValue = 3.0,
      StuffPower_Armor_Sharp = 1.02,
      StuffPower_Insulation_Cold = 24,
    },
    stuffProps = {
      statFactors = {
        Beauty = 1.7,
      },
    },
  },

  ["ThingDef:Leather_Panthera"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Panthera",
    label = "panthera fur",
    description = [[A soft furry pelt harvested from a big cat. It is difficult to pierce and insulates well against heat.]],
    statBases = {
      MarketValue = 3.0,
      StuffPower_Armor_Sharp = 0.93,
      StuffPower_Insulation_Heat = 24,
    },
    stuffProps = {
      statFactors = {
        Beauty = 1.7,
      },
    },
  },

  ["ThingDef:Leather_Camel"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Camel",
    label = "camelhide",
    description = [[Tanned, dried, scraped camel skin. Good at temperature regulation in hot climates.]],
    statBases = {
      MarketValue = 2.3,
      StuffPower_Insulation_Heat = 24,
    },
    stuffProps = {
      statFactors = {
        Beauty = 1.3,
      },
    },
  },

  ["ThingDef:Leather_Bluefur"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Bluefur",
    label = "bluefur",
    description = [[The furry pelt of muffalo. Recognizable by its distinctive blue tint. Good at temperature regulation in cold climates.]],
    statBases = {
      MarketValue = 2.3,
      StuffPower_Insulation_Cold = 20,
    },
    stuffProps = {
      statFactors = {
        Beauty = 1.3,
      },
    },
  },

  ["ThingDef:Leather_Bear"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Bear",
    label = "bearskin",
    description = [[The strong furry leather of a bear. Compared to most leather, it is quite a bit tougher and a bit better at all kinds of temperature regulation.]],
    statBases = {
      MarketValue = 3.4,
      StuffPower_Armor_Sharp = 1.12,
      StuffPower_Insulation_Cold = 20,
      StuffPower_Insulation_Heat = 20,
    },
    stuffProps = {
      statFactors = {
        Beauty = 1.9,
      },
    },
  },

  ["ThingDef:Leather_GuineaPig"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_GuineaPig",
    label = "guinea pig fur",
    description = [[Sheets of guinea pig fur. It is delicate, but luxurious.]],
    statBases = {
      MarketValue = 5,
      StuffPower_Armor_Sharp = 0.67,
      StuffPower_Armor_Blunt = 0.14,
      StuffPower_Insulation_Cold = 38,
      StuffPower_Insulation_Heat = 18,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 0.6,
        Beauty = 2.8,
      },
    },
  },

  ["ThingDef:Leather_Human"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Human",
    label = "human leather",
    description = [[Tanned, dried, scraped human skin. Most people find this material horrifying. Some find it fascinating. While a decent leather, it neither protects nor insulates particularly well.]],
    statBases = {
      MarketValue = 4.2,
      StuffPower_Armor_Sharp = 0.64,
      StuffPower_Insulation_Cold = 12,
      StuffPower_Insulation_Heat = 12,
    },
  },

  ["ThingDef:Leather_Pig"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Pig",
    label = "pigskin",
    description = [[Tanned, dried, scraped pig skin. While a decent leather, it neither protects nor insulates particularly well.]],
    statBases = {
      MarketValue = 1.9,
      StuffPower_Armor_Sharp = 0.64,
      StuffPower_Insulation_Cold = 12,
      StuffPower_Insulation_Heat = 12,
    },
  },

  ["ThingDef:Leather_Light"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Light",
    label = "lightleather",
    description = [[Lightweight, thin leather. Probably harvested from a small animal. Not as protective as thicker leathers.]],
    statBases = {
      MarketValue = 1.9,
      StuffPower_Armor_Sharp = 0.54,
      StuffPower_Armor_Blunt = 0.14,
      StuffPower_Insulation_Cold = 12,
      StuffPower_Insulation_Heat = 12,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 1.0,
      },
    },
  },

  ["ThingDef:Leather_Bird"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Bird",
    label = "birdskin",
    description = [[Tanned, dried, scraped bird skin. It is quite delicate. Without its feathers, it provides little protection from heat or cold.]],
    statBases = {
      MarketValue = 1.8,
      StuffPower_Armor_Sharp = 0.67,
      StuffPower_Armor_Blunt = 0.14,
      StuffPower_Insulation_Cold = 10,
      StuffPower_Insulation_Heat = 10,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 1.0,
      },
    },
  },

  ["ThingDef:Leather_Chinchilla"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Chinchilla",
    label = "chinchilla fur",
    description = [[Tanned, dried, scraped chinchilla skin. Known as an extremely luxurious and insulating fur, it is exceptionally valuable.]],
    statBases = {
      MarketValue = 6.5,
      StuffPower_Armor_Sharp = 0.67,
      StuffPower_Armor_Blunt = 0.14,
      StuffPower_Insulation_Cold = 30,
      StuffPower_Insulation_Heat = 16,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 1.0,
        Beauty = 3.6,
      },
    },
  },

  ["ThingDef:Leather_Fox"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Fox",
    label = "foxfur",
    description = [[The pelt of a fox. It protects well from the cold and is quite luxurious, fetching a high price.]],
    statBases = {
      MarketValue = 3.5,
      StuffPower_Armor_Sharp = 0.81,
      StuffPower_Armor_Blunt = 0.21,
      StuffPower_Insulation_Cold = 20,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 1.0,
        Beauty = 2.0,
      },
    },
  },

  ["ThingDef:Leather_Lizard"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Lizard",
    label = "lizardskin",
    description = [[The tanned skin of a cold-blooded reptile. Lizardskin is reasonably tough, but does not insulate well at all.]],
    statBases = {
      MarketValue = 2.1,
      StuffPower_Armor_Sharp = 0.81,
      StuffPower_Armor_Blunt = 0.27,
      StuffPower_Insulation_Cold = 12,
      StuffPower_Insulation_Heat = 12,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 1.0,
        Beauty = 1.2,
      },
    },
  },

  ["ThingDef:Leather_Elephant"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Elephant",
    label = "elephant leather",
    description = [[Tanned, dried, scraped elephant skin. While quite tough, it is a poor insulator.]],
    statBases = {
      MarketValue = 3.0,
      StuffPower_Armor_Sharp = 1.12,
      StuffPower_Insulation_Cold = 14,
      StuffPower_Insulation_Heat = 12,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 1.5,
        Beauty = 1.6,
      },
    },
  },

  ["ThingDef:Leather_Heavy"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Heavy",
    label = "heavy fur",
    description = [[Thick leather covered in a long, rugged mat of fur. Harvested from a large, hardy animal. This thick skin insulates and protects very well.]],
    statBases = {
      MarketValue = 3.3,
      StuffPower_Armor_Sharp = 1.24,
      StuffPower_Insulation_Cold = 30,
      StuffPower_Insulation_Heat = 14,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 1.5,
        Beauty = 1.85,
      },
    },
  },

  ["ThingDef:Leather_Rhinoceros"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Rhinoceros",
    label = "rhinoceros leather",
    description = [[Tanned, dried, scraped rhinocerous skin. It is exceptionally durable in combat, but provides little protection from weather.]],
    statBases = {
      MarketValue = 4.2,
      StuffPower_Armor_Sharp = 1.29,
      StuffPower_Insulation_Cold = 14,
      StuffPower_Insulation_Heat = 14,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 1.5,
        Beauty = 2.4,
      },
    },
  },

  ["ThingDef:Leather_Thrumbo"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Thrumbo",
    label = "thrumbofur",
    description = [[Furry pelt of a thrumbo. Luxurious and extraordinarily durable. Used for the highest-quality crafts for its insulation and strength.]],
    statBases = {
      MarketValue = 14.0,
      StuffPower_Armor_Sharp = 2.08,
      StuffPower_Armor_Blunt = 0.36,
      StuffPower_Insulation_Cold = 34,
      StuffPower_Insulation_Heat = 22,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 2.0,
        Beauty = 8,
      },
    },
  },

  ["ThingDef:Leather_Patch"] = {
    _ = {
      ParentName = "LeatherBase",
      DefCategory = "ThingDef",
      FileName = "Items_Resource_Stuff_Leather.xml",
      DLC = "Core",
    },
    defName = "Leather_Patch",
    label = "patchleather",
    description = [[A weak textile created by cutting up and sewing together various types of leathers. Regardless of what kind of leather is used to create it, patchleather's irregular seams make it less tough and less insulating than any intact leather.]],
    statBases = {
      MarketValue = 1.5,
      StuffPower_Armor_Sharp = 0.45,
      StuffPower_Armor_Blunt = 0.19,
      StuffPower_Armor_Heat = 0.9,
      StuffPower_Insulation_Cold = 9,
      StuffPower_Insulation_Heat = 9,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 1.0,
      },
    },
  },

  ["ThingDef:UnfinishedBase"] = {
    _ = {
      Name = "UnfinishedBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    thingClass = "UnfinishedThing",
    category = "Item",
    label = "unfinished thing",
    altitudeLayer = "Item",
    useHitPoints = true,
    tradeability = "None",
    statBases = {
      MaxHitPoints = 50,
      DeteriorationRate = 2.0,
      Beauty = -8,
      Mass = 1,
    },
    comps = {
      CompProperties_Forbiddable = {},
    },
    pathCost = 14,
    thingCategories = {
      "Unfinished",
    },
  },

  ["ThingDef:UnfinishedSculpture"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedSculpture",
    label = "unfinished sculpture",
    description = [[An unfinished sculpture.]],
  },

  ["ThingDef:UnfinishedGun"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedGun",
    label = "unfinished gun",
    description = [[An unfinished gun of some kind.]],
    statBases = {
      Flammability = 0.5,
    },
  },

  ["ThingDef:UnfinishedWeapon"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedWeapon",
    label = "unfinished weapon",
    description = [[An unfinished weapon.]],
  },

  ["ThingDef:UnfinishedArmor"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedArmor",
    label = "unfinished simple armor",
    description = [[An unfinished piece of simple armor.]],
  },

  ["ThingDef:UnfinishedTechArmor"] = {
    _ = {
      Name = "UnfinishedTechArmor",
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedTechArmor",
    label = "unfinished advanced armor",
    description = [[An unfinished piece of high-tech armor.]],
    statBases = {
      Flammability = 0.4,
    },
  },

  ["ThingDef:UnfinishedMetallicTechArmor"] = {
    _ = {
      ParentName = "UnfinishedTechArmor",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedMetallicTechArmor",
    label = "unfinished metal armor",
    description = [[An unfinished piece of metal armor.]],
  },

  ["ThingDef:UnfinishedApparel"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedApparel",
    label = "unfinished apparel",
    description = [[An unfinished piece of an apparel.]],
    comps = {
      {
        compClass = "CompColorable",
      },
    },
  },

  ["ThingDef:UnfinishedBelt"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedBelt",
    label = "unfinished belt",
    description = [[An unfinished piece of a belt.]],
    statBases = {
      Flammability = 0.5,
    },
  },

  ["ThingDef:UnfinishedPack"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedPack",
    label = "unfinished pack",
    description = [[An unfinished piece of a pack.]],
    statBases = {
      Flammability = 0.5,
    },
  },

  ["ThingDef:UnfinishedComponent"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedComponent",
    label = "unfinished component",
    description = [[An unfinished component.]],
    statBases = {
      Flammability = 0.5,
    },
  },

  ["ThingDef:UnfinishedHealthItemProsthetic"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedHealthItemProsthetic",
    label = "unfinished prosthetic",
    description = [[An unfinished prosthetic.]],
    statBases = {
      Flammability = 0.5,
    },
  },

  ["ThingDef:UnfinishedHealthItemBionic"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "UnfinishedHealthItemBionic",
    label = "unfinished bionic",
    description = [[An unfinished bionic.]],
    statBases = {
      Flammability = 0.5,
    },
  },

  ["ThingDef:MinifiedThing"] = {
    _ = {
      DefCategory = "ThingDef",
      FileName = "Items_Unfinished.xml",
      DLC = "Core",
    },
    defName = "MinifiedThing",
    label = "minified thing",
    thingClass = "MinifiedThing",
    category = "Item",
    useHitPoints = true,
    altitudeLayer = "Item",
    comps = {
      CompProperties_Forbiddable = {},
    },
    pathCost = 14,
  },

  ["ThingDef:Apparel_ShieldBelt"] = {
    _ = {
      ParentName = "ApparelBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Belts.xml",
      DLC = "Core",
    },
    defName = "Apparel_ShieldBelt",
    label = "shield belt",
    description = [[A projectile-repulsion device. It will attempt to stop incoming projectiles or shrapnel, but does nothing against melee attacks or heat. It prevents the wearer from firing out, and shuts down instantly if hit by EMP.]],
    thingClass = "ShieldBelt",
    statBases = {
      Mass = 3,
      WorkToMake = 14000,
      Flammability = 0.4,
      EnergyShieldRechargeRate = 0.13,
      EnergyShieldEnergyMax = 1.1,
      EquipDelay = 2,
    },
    costList = {
      ComponentIndustrial = 2,
      Steel = 50,
      Plasteel = 20,
    },
    recipeMaker = {
      unfinishedThingDef = "UnfinishedBelt",
      researchPrerequisite = "ShieldBelt",
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Machining",
      recipeUsers = {
        "TableMachining",
      },
      useIngredientsForColor = false,
      skillRequirements = {
        Crafting = 6,
      },
    },
    thingCategories = {
      "ApparelUtility",
    },
    apparel = {
      bodyPartGroups = {
        "Waist",
      },
      layers = {
        "Belt",
      },
      tags = {
        "BeltDefense",
      },
    },
  },

  ["ThingDef:HatBase"] = {
    _ = {
      Name = "HatBase",
      ParentName = "ApparelBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    thingCategories = {
      "Headgear",
    },
  },

  ["ThingDef:HatMakeableBase"] = {
    _ = {
      Name = "HatMakeableBase",
      ParentName = "ApparelMakeableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    thingCategories = {
      "Headgear",
    },
  },

  ["ThingDef:ArmorHelmetMakeableBase"] = {
    _ = {
      Name = "ArmorHelmetMakeableBase",
      ParentName = "ArmorMachineableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    thingCategories = {
      "ArmorHeadgear",
    },
  },

  ["ThingDef:NobleHatMakeableBase"] = {
    _ = {
      Name = "NobleHatMakeableBase",
      ParentName = "ApparelMakeableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    thingCategories = {
      "HeadgearNoble",
    },
  },

  ["ThingDef:Apparel_CowboyHat"] = {
    _ = {
      ParentName = "HatMakeableBase",
      Name = "CowboyHat",
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    defName = "Apparel_CowboyHat",
    label = "cowboy hat",
    description = [[Stylish yet rugged, this hat keeps the sun and rain off - and it gives anyone who wears it a bit of extra charm. It is the most important part of traditional western attire.]],
    recipeMaker = {
      researchPrerequisite = "ComplexClothing",
    },
    statBases = {
      MaxHitPoints = 80,
      WorkToMake = 1800,
      Mass = 0.14,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.10,
      StuffEffectMultiplierInsulation_Heat = 0.50,
      EquipDelay = 0.8,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      tags = {
        "IndustrialBasic",
        "Western",
      },
      defaultOutfitTags = {
        "Worker",
      },
    },
  },

  ["ThingDef:Apparel_BowlerHat"] = {
    _ = {
      ParentName = "CowboyHat",
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    defName = "Apparel_BowlerHat",
    label = "bowler hat",
    description = [[A good-looking hat which projects a slightly urban, money-loving style. Improves social impact.]],
    statBases = {
      WorkToMake = 1800,
      Mass = 0.14,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.10,
      StuffEffectMultiplierInsulation_Heat = 0.40,
      EquipDelay = 0.8,
    },
  },

  ["ThingDef:Apparel_TribalHeaddress"] = {
    _ = {
      ParentName = "HatMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    defName = "Apparel_TribalHeaddress",
    label = "tribal headdress",
    description = [[Elegant traditional garb, often with religious significance. Improves social impact.]],
    recipeMaker = {
      researchPrerequisite = {},
      recipeUsers = {
        "ElectricTailoringBench",
        "HandTailoringBench",
        "CraftingSpot",
      },
      skillRequirements = {
        Crafting = 4,
      },
      factionPrerequisiteTags = {
        "Tribal",
      },
    },
    statBases = {
      WorkToMake = 6000,
      Mass = 0.11,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.1,
      StuffEffectMultiplierInsulation_Heat = 0.15,
      EquipDelay = 1.5,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      defaultOutfitTags = {
        "Worker",
      },
    },
  },

  ["ThingDef:Apparel_Tuque"] = {
    _ = {
      ParentName = "HatMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    defName = "Apparel_Tuque",
    label = "tuque",
    description = [[A soft, thick cap. Great for keeping warm in winter.]],
    statBases = {
      MaxHitPoints = 80,
      WorkToMake = 1200,
      Mass = 0.07,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.50,
      StuffEffectMultiplierInsulation_Heat = 0,
      EquipDelay = 0.8,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      tags = {
        "IndustrialBasic",
      },
      defaultOutfitTags = {
        "Worker",
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_WarMask"] = {
    _ = {
      ParentName = "HatMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    defName = "Apparel_WarMask",
    label = "war mask",
    description = [[An artistically terrifying war mask. It hides the wearer's face and makes them more confident.]],
    statBases = {
      WorkToMake = 3000,
      MaxHitPoints = 80,
      Mass = 1.4,
      StuffEffectMultiplierArmor = 0.3,
      StuffEffectMultiplierInsulation_Cold = 0.05,
      StuffEffectMultiplierInsulation_Heat = 0.05,
      EquipDelay = 1.5,
    },
    apparel = {
      bodyPartGroups = {
        "FullHead",
      },
      layers = {
        "Overhead",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Sculpt",
      soundWorking = "Recipe_Sculpt",
      recipeUsers = {
        "CraftingSpot",
      },
      unfinishedThingDef = "UnfinishedSculpture",
      factionPrerequisiteTags = {
        "Tribal",
      },
    },
  },

  ["ThingDef:Apparel_WarVeil"] = {
    _ = {
      ParentName = "HatMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    defName = "Apparel_WarVeil",
    label = "war veil",
    description = [[A war veil, made out of reinforced cloth torn to appear damaged in combat. Some believe this functions as a talisman of courage.]],
    statBases = {
      WorkToMake = 1400,
      MaxHitPoints = 80,
      Mass = 0.08,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.05,
      StuffEffectMultiplierInsulation_Heat = 0.05,
      EquipDelay = 1.5,
    },
    apparel = {
      bodyPartGroups = {
        "FullHead",
      },
      layers = {
        "Overhead",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
    recipeMaker = {
      recipeUsers = {
        "CraftingSpot",
      },
      factionPrerequisiteTags = {
        "Tribal",
      },
    },
  },

  ["ThingDef:Apparel_SimpleHelmet"] = {
    _ = {
      ParentName = "ArmorHelmetMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    defName = "Apparel_SimpleHelmet",
    label = "simple helmet",
    description = [[A simple helmet which gives moderate protection against sharp attacks. Not effective against blunt weapons.]],
    statBases = {
      WorkToMake = 3200,
      MaxHitPoints = 100,
      Mass = 2,
      StuffEffectMultiplierArmor = 0.5,
      StuffEffectMultiplierInsulation_Cold = 0.15,
      StuffEffectMultiplierInsulation_Heat = 0,
      EquipDelay = 1.5,
    },
    recipeMaker = {
      recipeUsers = {
        "ElectricSmithy",
        "FueledSmithy",
      },
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      tags = {
        "IndustrialMilitaryBasic",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_AdvancedHelmet"] = {
    _ = {
      ParentName = "ArmorHelmetMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    defName = "Apparel_AdvancedHelmet",
    label = "flak helmet",
    description = [[A lightweight combat helmet with a complex design, reinforced with plasteel. Not effective against blunt weapons.]],
    recipeMaker = {
      researchPrerequisite = "FlakArmor",
      unfinishedThingDef = "UnfinishedMetallicTechArmor",
      skillRequirements = {
        Crafting = 5,
      },
    },
    statBases = {
      WorkToMake = 8000,
      MaxHitPoints = 120,
      Mass = 1.2,
      StuffEffectMultiplierArmor = 0.7,
      StuffEffectMultiplierInsulation_Cold = 0.15,
      StuffEffectMultiplierInsulation_Heat = 0,
      EquipDelay = 1.5,
    },
    costList = {
      ComponentIndustrial = 2,
      Plasteel = 10,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      tags = {
        "IndustrialMilitaryAdvanced",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
  },

  ["ThingDef:ApparelArmorHelmetPowerBase"] = {
    _ = {
      Name = "ApparelArmorHelmetPowerBase",
      ParentName = "ArmorHelmetMakeableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    recipeMaker = {
      unfinishedThingDef = "UnfinishedTechArmor",
      researchPrerequisite = "PoweredArmor",
      skillRequirements = {
        Crafting = 7,
      },
      recipeUsers = {
        _ = {
          Inherit = false,
        },
        "FabricationBench",
      },
    },
    tradeTags = {
      "HiTechArmor",
    },
    statBases = {
      WorkToMake = 21000,
      MaxHitPoints = 150,
      Mass = 1.5,
      Flammability = 0.4,
      ArmorRating_Sharp = 1.06,
      ArmorRating_Blunt = 0.45,
      ArmorRating_Heat = 0.54,
      Insulation_Cold = 4,
      Insulation_Heat = 2,
      EquipDelay = 4,
    },
    costList = {
      ComponentSpacer = 1,
      Plasteel = 40,
    },
    apparel = {
      bodyPartGroups = {
        "FullHead",
      },
      layers = {
        "Overhead",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
    comps = {
      CompProperties_BiocodableApparel = {},
    },
  },

  ["ThingDef:Apparel_PowerArmorHelmet"] = {
    _ = {
      ParentName = "ApparelArmorHelmetPowerBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    defName = "Apparel_PowerArmorHelmet",
    label = "marine helmet",
    description = [[A marine armor helmet, with a built-in status computer and layered plasteel-weave plates.\n\nArmor like this is often used by imperial janissaries and rapid-incursion space marines.]],
    apparel = {
      tags = {
        "SpacerMilitary",
      },
    },
  },

  ["ThingDef:ApparelArmorHelmetReconBase"] = {
    _ = {
      Name = "ApparelArmorHelmetReconBase",
      ParentName = "ArmorHelmetMakeableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    recipeMaker = {
      unfinishedThingDef = "UnfinishedTechArmor",
      researchPrerequisite = "ReconArmor",
      skillRequirements = {
        Crafting = 6,
      },
      recipeUsers = {
        _ = {
          Inherit = false,
        },
        "FabricationBench",
      },
    },
    tradeTags = {
      "HiTechArmor",
    },
    statBases = {
      WorkToMake = 15750,
      MaxHitPoints = 120,
      Mass = 1,
      Flammability = 0.4,
      ArmorRating_Sharp = 0.92,
      ArmorRating_Blunt = 0.4,
      ArmorRating_Heat = 0.46,
      Insulation_Cold = 4,
      Insulation_Heat = 2,
      EquipDelay = 2,
    },
    costList = {
      ComponentSpacer = 1,
      Plasteel = 30,
    },
    apparel = {
      bodyPartGroups = {
        "FullHead",
      },
      layers = {
        "Overhead",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
    comps = {
      CompProperties_BiocodableApparel = {},
    },
  },

  ["ThingDef:Apparel_ArmorHelmetRecon"] = {
    _ = {
      ParentName = "ApparelArmorHelmetReconBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    defName = "Apparel_ArmorHelmetRecon",
    label = "recon helmet",
    description = [[A high-tech armored helmet with a built-in status computer and a protective plasteel-weave plate.\n\nArmor like this is often used by imperial scout troops or glitterworld police forces.]],
    apparel = {
      tags = {
        "SpacerMilitary",
      },
    },
  },

  ["ThingDef:Apparel_PsychicFoilHelmet"] = {
    _ = {
      ParentName = "HatBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Headgear.xml",
      DLC = "Core",
    },
    defName = "Apparel_PsychicFoilHelmet",
    label = "psychic foil helmet",
    description = [[A thin helmet containing finely-tuned sheets of psychically-absorptive foil. Reduces the impact of psychic waves.]],
    statBases = {
      MaxHitPoints = 80,
      MarketValue = 250,
      Mass = 1.0,
      Flammability = 0.4,
      ArmorRating_Sharp = 0.09,
      ArmorRating_Blunt = 0.09,
      ArmorRating_Heat = 0.27,
      Insulation_Cold = 2,
      Insulation_Heat = 1,
      EquipDelay = 1.5,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      tags = {
        "IndustrialMilitaryBasic",
        "IndustrialMilitaryAdvanced",
        "SpacerMilitary",
      },
    },
  },

  ["ThingDef:Apparel_SmokepopBelt"] = {
    _ = {
      ParentName = "ApparelBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Packs.xml",
      DLC = "Core",
    },
    thingClass = "SmokepopBelt",
    defName = "Apparel_SmokepopBelt",
    label = "smokepop pack",
    description = [[A defensive smokescreen. When activated, it will release a cloud of smoke, obscuring incoming shots and preventing turrets from locking on.]],
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 3,
        ammoDef = "Chemfuel",
        ammoCountToRefill = 10,
        baseReloadTicks = 60,
        soundReload = "Standard_Reload",
        hotKey = "Misc4",
        chargeNoun = "smokepop",
        displayGizmoWhileUndrafted = false,
      },
    },
    verbs = {
      {
        label = "pop smoke",
        violent = false,
        targetable = false,
        nonInterruptingSelfCast = true,
        onlyManualCast = true,
      },
    },
    recipeMaker = {
      unfinishedThingDef = "UnfinishedPack",
      researchPrerequisite = "SmokepopBelt",
      recipeUsers = {
        "TableMachining",
      },
      useIngredientsForColor = false,
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Smith",
      skillRequirements = {
        Crafting = 3,
      },
    },
    costList = {
      ComponentIndustrial = 1,
      Steel = 20,
      Chemfuel = 40,
    },
    statBases = {
      WorkToMake = 1200,
      Mass = 3,
      Flammability = 0.4,
      SmokepopBeltRadius = 4.9,
      EquipDelay = 2,
    },
    thingCategories = {
      "ApparelUtility",
    },
    apparel = {
      bodyPartGroups = {
        "Waist",
      },
      layers = {
        "Belt",
      },
      tags = {
        "BeltDefensePop",
      },
    },
  },

  ["ThingDef:Apparel_PsychicShockLance"] = {
    _ = {
      ParentName = "ApparelNoQualityBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Utility.xml",
      DLC = "Core",
    },
    defName = "Apparel_PsychicShockLance",
    label = "psychic shock lance",
    description = [[A limited-use psychic effector. It shocks the target's mind with chaotic images, blocking coherent perception and dropping him into a state of psychic shock. There is a risk of brain damage. It has a long range, but requires line of sight.]],
    tradeTags = {
      "Artifact",
    },
    statBases = {
      Mass = 0.5,
      EquipDelay = 2,
      MarketValue = 550,
      MaxHitPoints = 80,
    },
    thingCategories = {
      "ApparelUtility",
    },
    apparel = {
      bodyPartGroups = {
        "Waist",
      },
      layers = {
        "Belt",
      },
    },
    smeltable = false,
    verbs = {
      {
        label = "psychic shock lance",
        targetable = true,
        onlyManualCast = true,
        range = 34.9,
        warmupTime = 0.5,
        targetParams = {
          canTargetBuildings = false,
          onlyTargetPsychicSensitive = true,
          neverTargetIncapacitated = true,
        },
      },
    },
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 2,
        destroyOnEmpty = true,
        hotKey = "Misc4",
        chargeNoun = "charge",
        displayGizmoWhileUndrafted = false,
      },
      {
        compClass = "CompTargetEffect_PsychicShock",
      },
      CompProperties_TargetEffect_BrainDamageChance = {
        brainDamageChance = 0.3,
      },
      CompProperties_TargetEffect_GoodwillImpact = {
        goodwillImpact = -200,
      },
      CompProperties_TargetEffect_MoteOnTarget = {
        moteDef = "Mote_PsycastPsychicEffect",
      },
      CompProperties_TargetEffect_MoteConnecting = {
        moteDef = "Mote_PsycastPsychicLine",
      },
    },
  },

  ["ThingDef:Apparel_PsychicInsanityLance"] = {
    _ = {
      ParentName = "ApparelNoQualityBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Utility.xml",
      DLC = "Core",
    },
    defName = "Apparel_PsychicInsanityLance",
    label = "psychic insanity lance",
    description = [[A limited-use psychic effector. It overwhelms the target's mind with terrifying perceptual distortions, driving him into a berserk state. There is a risk of brain damage. It has a long range, but requires line of sight.]],
    tradeTags = {
      "Artifact",
    },
    statBases = {
      Mass = 0.5,
      EquipDelay = 2,
      MarketValue = 650,
      MaxHitPoints = 80,
    },
    thingCategories = {
      "ApparelUtility",
    },
    apparel = {
      bodyPartGroups = {
        "Waist",
      },
      layers = {
        "Belt",
      },
    },
    smeltable = false,
    verbs = {
      {
        label = "psychic insanity lance",
        targetable = true,
        onlyManualCast = true,
        range = 34.9,
        warmupTime = 0.5,
        targetParams = {
          canTargetBuildings = false,
          onlyTargetPsychicSensitive = true,
          neverTargetIncapacitated = true,
        },
      },
    },
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 2,
        destroyOnEmpty = true,
        hotKey = "Misc4",
        chargeNoun = "charge",
        displayGizmoWhileUndrafted = false,
      },
      {
        compClass = "CompTargetEffect_Berserk",
      },
      CompProperties_TargetEffect_BrainDamageChance = {
        brainDamageChance = 0.3,
      },
      CompProperties_TargetEffect_GoodwillImpact = {
        goodwillImpact = -200,
      },
      CompProperties_TargetEffect_MoteOnTarget = {
        moteDef = "Mote_PsycastPsychicEffect",
      },
      CompProperties_TargetEffect_MoteConnecting = {
        moteDef = "Mote_PsycastPsychicLine",
      },
    },
  },

  ["ThingDef:ApparelNoQualityBase"] = {
    _ = {
      Name = "ApparelNoQualityBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    thingClass = "Apparel",
    category = "Item",
    pathCost = 14,
    useHitPoints = true,
    statBases = {
      MaxHitPoints = 100,
      Flammability = 1.0,
      DeteriorationRate = 2,
      Beauty = -3,
    },
    altitudeLayer = "Item",
    smeltable = true,
    comps = {
      CompProperties_Forbiddable = {},
      {
        compClass = "CompColorable",
      },
    },
  },

  ["ThingDef:ApparelBase"] = {
    _ = {
      Name = "ApparelBase",
      ParentName = "ApparelNoQualityBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    comps = {
      {
        compClass = "CompQuality",
      },
    },
  },

  ["ThingDef:ApparelMakeableBase"] = {
    _ = {
      Name = "ApparelMakeableBase",
      ParentName = "ApparelBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Tailor",
      soundWorking = "Recipe_Tailor",
      recipeUsers = {
        "ElectricTailoringBench",
        "HandTailoringBench",
      },
      unfinishedThingDef = "UnfinishedApparel",
      defaultIngredientFilter = {
        categories = {
          "Root",
        },
        disallowedThingDefs = {
          "Gold",
          "Silver",
          "Plasteel",
          "Jade",
          "Uranium",
        },
      },
    },
  },

  ["ThingDef:ArmorSmithableBase"] = {
    _ = {
      Name = "ArmorSmithableBase",
      ParentName = "ApparelBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    smeltable = true,
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Smith",
      recipeUsers = {
        "ElectricSmithy",
        "FueledSmithy",
      },
      defaultIngredientFilter = {
        categories = {
          "Root",
        },
        disallowedThingDefs = {
          "Gold",
          "Silver",
          "Plasteel",
          "Jade",
          "Uranium",
        },
      },
    },
  },

  ["ThingDef:ArmorMachineableBase"] = {
    _ = {
      Name = "ArmorMachineableBase",
      ParentName = "ApparelBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Machining",
      recipeUsers = {
        "TableMachining",
      },
      unfinishedThingDef = "UnfinishedArmor",
      defaultIngredientFilter = {
        categories = {
          "Root",
        },
        disallowedThingDefs = {
          "Gold",
          "Silver",
          "Plasteel",
          "Jade",
          "Uranium",
        },
      },
    },
  },

  ["ThingDef:Apparel_TribalA"] = {
    _ = {
      ParentName = "ApparelMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_TribalA",
    label = "tribalwear",
    description = [[A full-body garment crafted using neolithic tools. While it may look primitive, it is effective at insulating the wearer.]],
    tradeability = "Sellable",
    statBases = {
      MaxHitPoints = 100,
      WorkToMake = 1800,
      Mass = 0.5,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.55,
      StuffEffectMultiplierInsulation_Heat = 0.55,
      EquipDelay = 1.5,
    },
    thingCategories = {
      "Apparel",
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Legs",
      },
      layers = {
        "OnSkin",
      },
      tags = {
        "Neolithic",
      },
    },
    recipeMaker = {
      recipeUsers = {
        "ElectricTailoringBench",
        "HandTailoringBench",
        "CraftingSpot",
      },
    },
  },

  ["ThingDef:Apparel_Parka"] = {
    _ = {
      ParentName = "ApparelMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_Parka",
    label = "parka",
    description = [[A parka for staying warm in even the coldest of temperatures.]],
    thingCategories = {
      "Apparel",
    },
    statBases = {
      MaxHitPoints = 180,
      WorkToMake = 8000,
      Mass = 2,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 2.00,
      StuffEffectMultiplierInsulation_Heat = 0.00,
      EquipDelay = 3,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
      },
      layers = {
        "Shell",
      },
      tags = {
        "IndustrialBasic",
        "Neolithic",
      },
      defaultOutfitTags = {
        "Worker",
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_Pants"] = {
    _ = {
      ParentName = "ApparelMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_Pants",
    label = "pants",
    description = [[A simple set of pants.]],
    recipeMaker = {
      researchPrerequisite = "ComplexClothing",
    },
    thingCategories = {
      "Apparel",
    },
    statBases = {
      MaxHitPoints = 100,
      WorkToMake = 1600,
      Mass = 0.5,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.20,
      StuffEffectMultiplierInsulation_Heat = 0.08,
      EquipDelay = 2,
    },
    apparel = {
      bodyPartGroups = {
        "Legs",
      },
      layers = {
        "OnSkin",
      },
      tags = {
        "IndustrialBasic",
      },
      defaultOutfitTags = {
        "Worker",
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_BasicShirt"] = {
    _ = {
      ParentName = "ApparelMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_BasicShirt",
    label = "T-shirt",
    description = [[A simple T-shirt.]],
    thingCategories = {
      "Apparel",
    },
    statBases = {
      MaxHitPoints = 100,
      WorkToMake = 1600,
      Mass = 0.25,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.22,
      StuffEffectMultiplierInsulation_Heat = 0.10,
      EquipDelay = 1.5,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Shoulders",
      },
      layers = {
        "OnSkin",
      },
      tags = {
        "IndustrialBasic",
      },
      defaultOutfitTags = {
        "Worker",
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_CollarShirt"] = {
    _ = {
      ParentName = "ApparelMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_CollarShirt",
    description = [[A nice-looking collared shirt with buttons.]],
    label = "button-down shirt",
    recipeMaker = {
      researchPrerequisite = "ComplexClothing",
    },
    thingCategories = {
      "Apparel",
    },
    statBases = {
      MaxHitPoints = 100,
      WorkToMake = 2700,
      Mass = 0.3,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.26,
      StuffEffectMultiplierInsulation_Heat = 0.10,
      EquipDelay = 1.5,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
      },
      layers = {
        "OnSkin",
      },
      tags = {
        "IndustrialBasic",
      },
      defaultOutfitTags = {
        "Worker",
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_Duster"] = {
    _ = {
      ParentName = "ApparelMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_Duster",
    description = [[A long duster coat for blocking the sun and grit of the outdoors.]],
    label = "duster",
    recipeMaker = {
      researchPrerequisite = "ComplexClothing",
    },
    thingCategories = {
      "Apparel",
    },
    statBases = {
      MaxHitPoints = 200,
      WorkToMake = 10000,
      Mass = 2,
      StuffEffectMultiplierArmor = 0.3,
      StuffEffectMultiplierInsulation_Cold = 0.60,
      StuffEffectMultiplierInsulation_Heat = 0.85,
      EquipDelay = 3,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
        "Legs",
      },
      layers = {
        "Shell",
      },
      tags = {
        "IndustrialAdvanced",
      },
      defaultOutfitTags = {
        "Worker",
      },
    },
  },

  ["ThingDef:Apparel_Jacket"] = {
    _ = {
      ParentName = "ApparelMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_Jacket",
    label = "jacket",
    description = [[A tough jacket to stop scrapes and bruises, and to keep one warm in chilly weather.]],
    thingCategories = {
      "Apparel",
    },
    statBases = {
      MaxHitPoints = 160,
      WorkToMake = 7000,
      Mass = 1.7,
      StuffEffectMultiplierArmor = 0.3,
      StuffEffectMultiplierInsulation_Cold = 0.80,
      StuffEffectMultiplierInsulation_Heat = 0.30,
      EquipDelay = 1.5,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
      },
      layers = {
        "Shell",
      },
      tags = {
        "IndustrialAdvanced",
      },
      defaultOutfitTags = {
        "Worker",
      },
    },
  },

  ["ThingDef:Apparel_PlateArmor"] = {
    _ = {
      ParentName = "ArmorSmithableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_PlateArmor",
    label = "plate armor",
    description = [[Overlapping solid plates of armor covering the entire body from neck to feet.]],
    recipeMaker = {
      unfinishedThingDef = "UnfinishedMetallicTechArmor",
      researchPrerequisite = "PlateArmor",
      skillRequirements = {
        Crafting = 7,
      },
    },
    statBases = {
      WorkToMake = 38000,
      MaxHitPoints = 290,
      Mass = 15,
      StuffEffectMultiplierArmor = 0.73,
      StuffEffectMultiplierInsulation_Cold = 1.0,
      StuffEffectMultiplierInsulation_Heat = 0,
      EquipDelay = 15,
    },
    thingCategories = {
      "ApparelArmor",
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
        "Legs",
      },
      layers = {
        "Middle",
        "Shell",
      },
      tags = {
        "MedievalMilitary",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_FlakVest"] = {
    _ = {
      ParentName = "ArmorMachineableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_FlakVest",
    label = "flak vest",
    description = [[A vest with armor plates inserted on the chest and back. While quite effective at deflecting gunshots and stabbing attacks against the chest, it does nothing to protect the limbs.]],
    recipeMaker = {
      researchPrerequisite = "FlakArmor",
      unfinishedThingDef = "UnfinishedTechArmor",
      skillRequirements = {
        Crafting = 4,
      },
    },
    statBases = {
      WorkToMake = 9000,
      MaxHitPoints = 200,
      Mass = 4,
      Flammability = 0.6,
      ArmorRating_Sharp = 1.00,
      ArmorRating_Blunt = 0.36,
      ArmorRating_Heat = 0.27,
      Insulation_Cold = 1,
      EquipDelay = 5,
    },
    thingCategories = {
      "ApparelArmor",
    },
    costList = {
      Cloth = 30,
      Steel = 60,
      ComponentIndustrial = 1,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
      },
      layers = {
        "Middle",
      },
      tags = {
        "IndustrialMilitaryBasic",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_FlakPants"] = {
    _ = {
      ParentName = "ArmorMachineableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_FlakPants",
    label = "flak pants",
    description = [[A pair of pants with armor plates sewn in. While it's not as good as solid armor, it offers effective protection against all manner of attacks while remaining quite comfortable.]],
    recipeMaker = {
      researchPrerequisite = "FlakArmor",
      unfinishedThingDef = "UnfinishedTechArmor",
      skillRequirements = {
        Crafting = 4,
      },
    },
    statBases = {
      WorkToMake = 9000,
      MaxHitPoints = 200,
      Mass = 4,
      Flammability = 0.6,
      ArmorRating_Sharp = 0.40,
      ArmorRating_Blunt = 0.08,
      ArmorRating_Heat = 0.10,
      Insulation_Cold = 3.5,
      Insulation_Heat = 1,
      EquipDelay = 5,
    },
    thingCategories = {
      "ApparelArmor",
    },
    costList = {
      Cloth = 30,
      Steel = 60,
      ComponentIndustrial = 1,
    },
    apparel = {
      bodyPartGroups = {
        "Legs",
      },
      layers = {
        "OnSkin",
        "Middle",
      },
      tags = {
        "IndustrialMilitaryBasic",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_FlakJacket"] = {
    _ = {
      ParentName = "ArmorMachineableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_FlakJacket",
    label = "flak jacket",
    description = [[A tough fabric jacket with armor plates sewn in. While it's not as good as solid armor, it offers effective protection against all manner of attacks while remaining quite comfortable.]],
    recipeMaker = {
      researchPrerequisite = "FlakArmor",
      unfinishedThingDef = "UnfinishedTechArmor",
      skillRequirements = {
        Crafting = 4,
      },
    },
    costList = {
      Cloth = 50,
      Steel = 70,
      ComponentIndustrial = 1,
    },
    thingCategories = {
      "ApparelArmor",
    },
    statBases = {
      MaxHitPoints = 200,
      WorkToMake = 14000,
      Mass = 7,
      Flammability = 0.6,
      ArmorRating_Sharp = 0.40,
      ArmorRating_Blunt = 0.08,
      ArmorRating_Heat = 0.10,
      Insulation_Cold = 14.4,
      Insulation_Heat = 3,
      EquipDelay = 3,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
      },
      layers = {
        "Shell",
      },
      tags = {
        "IndustrialAdvanced",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
  },

  ["ThingDef:ApparelArmorPowerBase"] = {
    _ = {
      Name = "ApparelArmorPowerBase",
      ParentName = "ArmorMachineableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    recipeMaker = {
      unfinishedThingDef = "UnfinishedTechArmor",
      researchPrerequisite = "PoweredArmor",
      skillRequirements = {
        Crafting = 7,
      },
      recipeUsers = {
        _ = {
          Inherit = false,
        },
        "FabricationBench",
      },
    },
    statBases = {
      WorkToMake = 60000,
      MaxHitPoints = 340,
      Mass = 12,
      Flammability = 0.4,
      ArmorRating_Sharp = 1.06,
      ArmorRating_Blunt = 0.45,
      ArmorRating_Heat = 0.54,
      Insulation_Cold = 34,
      Insulation_Heat = 10,
      EquipDelay = 14,
    },
    thingCategories = {
      "ApparelArmor",
    },
    tradeTags = {
      "HiTechArmor",
    },
    costList = {
      ComponentSpacer = 4,
      Plasteel = 100,
      Uranium = 20,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
        "Legs",
      },
      layers = {
        "Middle",
        "Shell",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
    comps = {
      CompProperties_BiocodableApparel = {},
    },
  },

  ["ThingDef:Apparel_PowerArmor"] = {
    _ = {
      ParentName = "ApparelArmorPowerBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_PowerArmor",
    label = "marine armor",
    description = [[A suit of powered armor. Layered plasteel-weave plates are very effective at stopping attacks, with few vulnerable joint sections. Neuro-memetic assistors allow a human to wear the armor and still move easily.\n\nArmor like this is often used by imperial janissaries and rapid-incursion space marines.]],
    apparel = {
      tags = {
        "SpacerMilitary",
      },
    },
  },

  ["ThingDef:ApparelArmorReconBase"] = {
    _ = {
      Name = "ApparelArmorReconBase",
      ParentName = "ArmorMachineableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    recipeMaker = {
      unfinishedThingDef = "UnfinishedTechArmor",
      researchPrerequisite = "ReconArmor",
      skillRequirements = {
        Crafting = 6,
      },
      recipeUsers = {
        _ = {
          Inherit = false,
        },
        "FabricationBench",
      },
    },
    tradeTags = {
      "HiTechArmor",
    },
    statBases = {
      WorkToMake = 45000,
      MaxHitPoints = 280,
      Mass = 9,
      Flammability = 0.4,
      ArmorRating_Sharp = 0.92,
      ArmorRating_Blunt = 0.4,
      ArmorRating_Heat = 0.46,
      Insulation_Cold = 32,
      Insulation_Heat = 9,
      EquipDelay = 11,
    },
    thingCategories = {
      "ApparelArmor",
    },
    costList = {
      ComponentSpacer = 3,
      Plasteel = 80,
      Uranium = 10,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
        "Legs",
      },
      layers = {
        "Middle",
        "Shell",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
    comps = {
      CompProperties_BiocodableApparel = {},
    },
  },

  ["ThingDef:Apparel_ArmorRecon"] = {
    _ = {
      ParentName = "ApparelArmorReconBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Core",
    },
    defName = "Apparel_ArmorRecon",
    label = "recon armor",
    description = [[A suit of light partially-powered armor, designed to permit quick movement. Lightweight plasteel-weave plates block attacks without compromising mobility, and neuro-memetic assistors in the lower body allow a human to wear the armor and still move easily.\n\nArmor like this is often used by imperial scout troops and glitterworld police forces.]],
    apparel = {
      tags = {
        "SpacerMilitary",
      },
    },
  },

  ["ThingDef:OrbitalStrikeBase"] = {
    _ = {
      Abstract = true,
      Name = "OrbitalStrikeBase",
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_OrbitalStrikes.xml",
      DLC = "Core",
    },
    thingClass = "OrbitalStrike",
  },

  ["ThingDef:Bombardment"] = {
    _ = {
      ParentName = "OrbitalStrikeBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_OrbitalStrikes.xml",
      DLC = "Core",
    },
    defName = "Bombardment",
    label = "bombardment",
    thingClass = "Bombardment",
    comps = {
      CompProperties_OrbitalBeam = {
        width = 0.2,
        color = "(255, 20, 20, 242)",
      },
    },
  },

  ["ThingDef:Mote_Bombardment_PreImpact"] = {
    _ = {
      ParentName = "MoteBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_OrbitalStrikes.xml",
      DLC = "Core",
    },
    defName = "Mote_Bombardment_PreImpact",
    altitudeLayer = "MoteOverhead",
  },

  ["ThingDef:PowerBeam"] = {
    _ = {
      ParentName = "OrbitalStrikeBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_OrbitalStrikes.xml",
      DLC = "Core",
    },
    defName = "PowerBeam",
    label = "power beam",
    thingClass = "PowerBeam",
    comps = {
      CompProperties_OrbitalBeam = {
        width = 8,
        color = "(255, 245, 214, 242)",
        sound = "OrbitalBeam",
      },
      CompProperties_CameraShaker = {
        mag = 0.03,
      },
      CompProperties_AffectsSky = {
        skyColors = {
          sky = "(255, 230, 200)",
          shadow = "(225, 220, 185)",
          overlay = "(255, 255, 255)",
          saturation = 1.3,
        },
      },
    },
  },

  ["ThingDef:SignalAction_Letter"] = {
    _ = {
      ParentName = "SignalActionBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_SignalActions.xml",
      DLC = "Core",
    },
    defName = "SignalAction_Letter",
    label = "signal action - letter",
    thingClass = "SignalAction_Letter",
  },

  ["ThingDef:SignalAction_Ambush"] = {
    _ = {
      ParentName = "SignalActionBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_SignalActions.xml",
      DLC = "Core",
    },
    defName = "SignalAction_Ambush",
    label = "signal action - ambush",
    thingClass = "SignalAction_Ambush",
  },

  ["ThingDef:SkyfallerBase"] = {
    _ = {
      Name = "SkyfallerBase",
      ParentName = "EtherealThingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Ethereal_Skyfallers.xml",
      DLC = "Core",
    },
    thingClass = "Skyfaller",
    useHitPoints = false,
    altitudeLayer = "Skyfaller",
  },

  ["ThingDef:DropPodIncoming"] = {
    _ = {
      ParentName = "SkyfallerBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Skyfallers.xml",
      DLC = "Core",
    },
    defName = "DropPodIncoming",
    label = "drop pod (incoming)",
    thingClass = "DropPodIncoming",
  },

  ["ThingDef:DropPodLeaving"] = {
    _ = {
      ParentName = "SkyfallerBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Skyfallers.xml",
      DLC = "Core",
    },
    defName = "DropPodLeaving",
    label = "drop pod (leaving)",
    thingClass = "DropPodLeaving",
  },

  ["ThingDef:ShipChunkIncoming"] = {
    _ = {
      ParentName = "SkyfallerBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Skyfallers.xml",
      DLC = "Core",
    },
    defName = "ShipChunkIncoming",
    label = "ship chunk (incoming)",
    size = {2, 2},
  },

  ["ThingDef:CrashedShipPartIncoming"] = {
    _ = {
      ParentName = "SkyfallerBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Skyfallers.xml",
      DLC = "Core",
    },
    defName = "CrashedShipPartIncoming",
    label = "crashed ship part (incoming)",
    size = {6, 3},
  },

  ["ThingDef:MeteoriteIncoming"] = {
    _ = {
      ParentName = "SkyfallerBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Skyfallers.xml",
      DLC = "Core",
    },
    defName = "MeteoriteIncoming",
    label = "meteorite (incoming)",
    size = {2, 2},
  },

  ["ThingDef:EtherealThingBase"] = {
    _ = {
      Abstract = true,
      Name = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Core",
    },
    category = "Ethereal",
    useHitPoints = false,
  },

  ["ThingDef:RectTrigger"] = {
    _ = {
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Core",
    },
    defName = "RectTrigger",
    label = "rect trigger",
    thingClass = "RectTrigger",
  },

  ["ThingDef:TriggerUnfogged"] = {
    _ = {
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Core",
    },
    defName = "TriggerUnfogged",
    label = "trigger unfogged",
    thingClass = "TriggerUnfogged",
  },

  ["ThingDef:Explosion"] = {
    _ = {
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Core",
    },
    defName = "Explosion",
    label = "explosion",
    thingClass = "Explosion",
  },

  ["ThingDef:Blight"] = {
    _ = {
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Core",
    },
    defName = "Blight",
    label = "blight",
    thingClass = "Blight",
  },

  ["ThingDef:Tornado"] = {
    _ = {
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Core",
    },
    defName = "Tornado",
    label = "tornado",
    thingClass = "Tornado",
    comps = {
      CompProperties_WindSource = {},
    },
  },

  ["ThingDef:TunnelHiveSpawner"] = {
    _ = {
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Core",
    },
    defName = "TunnelHiveSpawner",
    label = "tunnel",
    thingClass = "TunnelHiveSpawner",
  },

  ["ThingDef:PawnFlyerBase"] = {
    _ = {
      Name = "PawnFlyerBase",
      Abstract = true,
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Core",
    },
    label = "flying",
    thingClass = "PawnFlyer",
    useHitPoints = false,
    altitudeLayer = "Skyfaller",
  },

  ["ThingDef:BaseFilth"] = {
    _ = {
      Name = "BaseFilth",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    thingClass = "Filth",
    category = "Filth",
    altitudeLayer = "Filth",
    useHitPoints = false,
    statBases = {
      Beauty = -15,
      Cleanliness = -5,
    },
  },

  ["ThingDef:Filth_Dirt"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_Dirt",
    label = "dirt",
  },

  ["ThingDef:Filth_AnimalFilth"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_AnimalFilth",
    label = "animal filth",
  },

  ["ThingDef:Filth_Trash"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_Trash",
    label = "trash",
  },

  ["ThingDef:Filth_Sand"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_Sand",
    label = "sand",
  },

  ["ThingDef:Filth_RubbleRock"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_RubbleRock",
    label = "rock rubble",
  },

  ["ThingDef:Filth_RubbleBuilding"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_RubbleBuilding",
    label = "building rubble",
  },

  ["ThingDef:SlagRubble"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "SlagRubble",
    label = "scattered slag",
  },

  ["ThingDef:SandbagRubble"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "SandbagRubble",
    label = "scattered sandbags",
  },

  ["ThingDef:Filth_Blood"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_Blood",
    label = "blood",
    statBases = {
      Beauty = -30,
      Cleanliness = -10,
    },
  },

  ["ThingDef:Filth_BloodInsect"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_BloodInsect",
    label = "bugblood",
    statBases = {
      Beauty = -40,
      Cleanliness = -15,
    },
  },

  ["ThingDef:Filth_MachineBits"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_MachineBits",
    label = "machine bits",
    statBases = {
      Beauty = -10,
      Cleanliness = -5,
    },
  },

  ["ThingDef:Filth_AmnioticFluid"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_AmnioticFluid",
    label = "amniotic fluid",
    statBases = {
      Beauty = -30,
      Cleanliness = -5,
    },
  },

  ["ThingDef:Filth_Slime"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_Slime",
    label = "slime",
    statBases = {
      Beauty = -25,
      Cleanliness = -5,
    },
  },

  ["ThingDef:Filth_Vomit"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_Vomit",
    label = "vomit",
    statBases = {
      Beauty = -40,
      Cleanliness = -15,
    },
  },

  ["ThingDef:Filth_FireFoam"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_FireFoam",
    label = "firefoam",
    statBases = {
      Beauty = -25,
      Cleanliness = -5,
    },
  },

  ["ThingDef:Filth_Fuel"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_Fuel",
    label = "chemfuel puddle",
    description = [[A puddle of flammable chemfuel.]],
    thingClass = "LiquidFuel",
    useHitPoints = true,
    statBases = {
      Beauty = -10,
      Cleanliness = -15,
      MaxHitPoints = 150,
      Flammability = 2.0,
    },
  },

  ["ThingDef:Filth_CorpseBile"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_CorpseBile",
    label = "corpse bile",
    statBases = {
      Beauty = -50,
      Cleanliness = -20,
    },
  },

  ["ThingDef:Filth_Ash"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_Ash",
    label = "ash",
    statBases = {
      Beauty = -12,
      Cleanliness = -15,
    },
  },

  ["ThingDef:Filth_Water"] = {
    _ = {
      ParentName = "BaseFilth",
      DefCategory = "ThingDef",
      FileName = "Filth_Various.xml",
      DLC = "Core",
    },
    defName = "Filth_Water",
    label = "water puddle",
    statBases = {
      Beauty = -10,
      Cleanliness = -5,
    },
  },

  ["ThingDef:BaseGas"] = {
    _ = {
      Name = "BaseGas",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Gas_Various.xml",
      DLC = "Core",
    },
    thingClass = "Gas",
    label = "gas",
    category = "Gas",
    altitudeLayer = "Gas",
    useHitPoints = false,
  },

  ["ThingDef:Gas_Smoke"] = {
    _ = {
      ParentName = "BaseGas",
      DefCategory = "ThingDef",
      FileName = "Gas_Various.xml",
      DLC = "Core",
    },
    defName = "Gas_Smoke",
    label = "smoke",
  },

  ["ThingDef:ActiveDropPod"] = {
    _ = {
      DefCategory = "ThingDef",
      FileName = "Things_Special.xml",
      DLC = "Core",
    },
    defName = "ActiveDropPod",
    label = "drop pod",
    category = "Item",
    thingClass = "ActiveDropPod",
    altitudeLayer = "Building",
    useHitPoints = true,
    statBases = {
      MaxHitPoints = 500,
      Flammability = 0,
    },
  },

  ["ThingDef:Fire"] = {
    _ = {
      DefCategory = "ThingDef",
      FileName = "Things_Special.xml",
      DLC = "Core",
    },
    defName = "Fire",
    label = "fire",
    thingClass = "Fire",
    category = "Attachment",
    altitudeLayer = "PawnState",
    useHitPoints = false,
  },

  ["ThingDef:Spark"] = {
    _ = {
      DefCategory = "ThingDef",
      FileName = "Things_Special.xml",
      DLC = "Core",
    },
    defName = "Spark",
    label = "spark",
    category = "Projectile",
    thingClass = "Spark",
    altitudeLayer = "Projectile",
    useHitPoints = false,
  },

  ["ThingDef:ChunkBase"] = {
    _ = {
      Name = "ChunkBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    category = "Item",
    thingClass = "Thing",
    altitudeLayer = "Item",
    passability = "PassThroughOnly",
    fillPercent = 0.50,
    statBases = {
      MaxHitPoints = 300,
      Flammability = 0,
      Beauty = -8,
      Cleanliness = -2,
    },
    pathCost = 42,
    pathCostIgnoreRepeat = true,
    stackLimit = 1,
    tradeability = "None",
  },

  ["ThingDef:ChunkRockBase"] = {
    _ = {
      ParentName = "ChunkBase",
      Name = "ChunkRockBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    description = [[A chunk of rock. Can be cut into usable stone blocks.]],
    thingCategories = {
      "StoneChunks",
    },
  },

  ["ThingDef:StoneBlocksBase"] = {
    _ = {
      ParentName = "ResourceBase",
      Name = "StoneBlocksBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    description = [[Blocks of stone. Mostly useful for building long-lasting, simple structures.]],
    useHitPoints = false,
    tradeability = "Buyable",
    statBases = {
      MaxHitPoints = 200,
      MarketValue = 0.9,
      SharpDamageMultiplier = 0.6,
      BluntDamageMultiplier = 1.0,
      Beauty = -12,
      ConstructionSpeedFactor = 0.8,
    },
    thingCategories = {
      "StoneBlocks",
    },
    stuffProps = {
      categories = {
        "Stony",
      },
      statOffsets = {
        WorkToBuild = 140,
      },
      statFactors = {
        MarketValue = 0.4,
        MaxHitPoints = 1.8,
        Flammability = 0,
        WorkToBuild = 6.0,
        WorkToMake = 1.3,
        DoorOpenSpeed = 0.45,
        BedRestEffectiveness = 0.9,
        MeleeWeapon_CooldownMultiplier = 1.30,
      },
    },
    terrainAffordanceNeeded = "Heavy",
  },

  ["ThingDef:UglyRockBase"] = {
    _ = {
      Name = "UglyRockBase",
      ParentName = "RockBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    statBases = {
      Flammability = 0,
      Beauty = -2,
    },
  },

  ["ThingDef:ChunkSlagSteel"] = {
    _ = {
      ParentName = "ChunkBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "ChunkSlagSteel",
    label = "steel slag chunk",
    description = [[A chunk of steel slag. While it's useless in its current form, it can be smelted to recover steel.]],
    statBases = {
      Mass = 5,
    },
    thingCategories = {
      "Chunks",
    },
    smeltProducts = {
      Steel = 15,
    },
  },

  ["ThingDef:Sandstone"] = {
    _ = {
      ParentName = "UglyRockBase",
      Name = "SandstoneBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "Sandstone",
    label = "sandstone",
    description = [[A sedimentary rock composed of sand particles compressed together.]],
    statBases = {
      MaxHitPoints = 400,
    },
    building = {
      mineableThing = "ChunkSandstone",
    },
  },

  ["ThingDef:SmoothedSandstone"] = {
    _ = {
      ParentName = "SandstoneBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "SmoothedSandstone",
    label = "smoothed sandstone",
    description = [[A sedimentary rock composed of sand particles compressed together. The sand layers have been polished to a flat, smooth surface.]],
    statBases = {
      Beauty = 1,
      MarketValue = 18,
    },
    building = {
      isNaturalRock = false,
      artificialForMeditationPurposes = false,
    },
  },

  ["ThingDef:ChunkSandstone"] = {
    _ = {
      ParentName = "ChunkRockBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "ChunkSandstone",
    label = "sandstone chunk",
    statBases = {
      Mass = 20,
    },
  },

  ["ThingDef:BlocksSandstone"] = {
    _ = {
      ParentName = "StoneBlocksBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "BlocksSandstone",
    label = "sandstone blocks",
    description = [[Blocks of solid sandstone. Sandstone is a relatively soft rock and chips easily.]],
    statBases = {
      Mass = 1,
      SharpDamageMultiplier = 0.5,
    },
    stuffProps = {
      statFactors = {
        Beauty = 1.1,
        MaxHitPoints = 1.4,
        WorkToBuild = 5.0,
        WorkToMake = 1.1,
      },
    },
  },

  ["ThingDef:Granite"] = {
    _ = {
      ParentName = "UglyRockBase",
      Name = "GraniteBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "Granite",
    label = "granite",
    description = [[A very hard igneous rock.]],
    statBases = {
      MaxHitPoints = 900,
    },
    building = {
      mineableThing = "ChunkGranite",
    },
  },

  ["ThingDef:SmoothedGranite"] = {
    _ = {
      ParentName = "GraniteBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "SmoothedGranite",
    label = "smoothed granite",
    description = [[A very hard igneous rock. The shining surface is filled with a mosaic of black, white, and pink speckles.]],
    statBases = {
      Beauty = 1,
      MarketValue = 20,
    },
    building = {
      isNaturalRock = false,
      artificialForMeditationPurposes = false,
    },
  },

  ["ThingDef:ChunkGranite"] = {
    _ = {
      ParentName = "ChunkRockBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "ChunkGranite",
    label = "granite chunk",
    statBases = {
      Mass = 25,
    },
  },

  ["ThingDef:BlocksGranite"] = {
    _ = {
      ParentName = "StoneBlocksBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "BlocksGranite",
    label = "granite blocks",
    description = [[Blocks of solid granite. Granite is a very hard stone.]],
    statBases = {
      Mass = 1.25,
      SharpDamageMultiplier = 0.65,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 1.7,
      },
    },
  },

  ["ThingDef:Limestone"] = {
    _ = {
      ParentName = "UglyRockBase",
      Name = "LimestoneBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "Limestone",
    label = "limestone",
    description = [[A sedimentary rock formed from the compacted remains of ancient seashells.]],
    statBases = {
      MaxHitPoints = 700,
    },
    building = {
      mineableThing = "ChunkLimestone",
    },
  },

  ["ThingDef:SmoothedLimestone"] = {
    _ = {
      ParentName = "LimestoneBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "SmoothedLimestone",
    label = "smoothed limestone",
    description = [[A sedimentary rock formed from the compacted remains of ancient seashells. It glows a smooth white, with light patterns of impurities suspended within.]],
    statBases = {
      Beauty = 1,
      MarketValue = 20,
    },
    building = {
      isNaturalRock = false,
      artificialForMeditationPurposes = false,
    },
  },

  ["ThingDef:ChunkLimestone"] = {
    _ = {
      ParentName = "ChunkRockBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "ChunkLimestone",
    label = "limestone chunk",
    statBases = {
      Mass = 22,
    },
  },

  ["ThingDef:BlocksLimestone"] = {
    _ = {
      ParentName = "StoneBlocksBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "BlocksLimestone",
    label = "limestone blocks",
    description = [[Blocks of solid limestone.]],
    statBases = {
      Mass = 1.1,
    },
    stuffProps = {
      statFactors = {
        MaxHitPoints = 1.55,
      },
    },
  },

  ["ThingDef:Slate"] = {
    _ = {
      ParentName = "UglyRockBase",
      Name = "SlateBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "Slate",
    label = "slate",
    description = [[A dark-colored metamorphic rock. Its fine layers are emblematic of slaty cleavage.]],
    statBases = {
      MaxHitPoints = 500,
    },
    building = {
      mineableThing = "ChunkSlate",
    },
  },

  ["ThingDef:SmoothedSlate"] = {
    _ = {
      ParentName = "SlateBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "SmoothedSlate",
    label = "smoothed slate",
    description = [[A dark-colored metamorphic rock. Its fine layers are emblematic of slaty cleavage. Interior strata are clearly visible through the polished surface.]],
    statBases = {
      Beauty = 1,
      MarketValue = 20,
    },
    building = {
      isNaturalRock = false,
      artificialForMeditationPurposes = false,
    },
  },

  ["ThingDef:ChunkSlate"] = {
    _ = {
      ParentName = "ChunkRockBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "ChunkSlate",
    label = "slate chunk",
    statBases = {
      Mass = 18,
    },
  },

  ["ThingDef:BlocksSlate"] = {
    _ = {
      ParentName = "StoneBlocksBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "BlocksSlate",
    label = "slate blocks",
    description = [[Blocks of solid slate. A dull-looking rock that chips easily.]],
    statBases = {
      Mass = 0.9,
    },
    stuffProps = {
      statFactors = {
        Beauty = 1.1,
        MaxHitPoints = 1.3,
      },
    },
  },

  ["ThingDef:Marble"] = {
    _ = {
      ParentName = "UglyRockBase",
      Name = "MarbleBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "Marble",
    label = "marble",
    description = [[A soft metamorphic rock.]],
    statBases = {
      MaxHitPoints = 450,
      Beauty = -1,
    },
    building = {
      mineableThing = "ChunkMarble",
    },
  },

  ["ThingDef:SmoothedMarble"] = {
    _ = {
      ParentName = "MarbleBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "SmoothedMarble",
    label = "smoothed marble",
    description = [[A soft metamorphic rock. This semi-transparent rock almost appears to glow with its own inner light.]],
    statBases = {
      Beauty = 2,
      MarketValue = 25,
    },
    building = {
      isNaturalRock = false,
      artificialForMeditationPurposes = false,
    },
  },

  ["ThingDef:ChunkMarble"] = {
    _ = {
      ParentName = "ChunkRockBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "ChunkMarble",
    label = "marble chunk",
    statBases = {
      Mass = 25,
    },
  },

  ["ThingDef:BlocksMarble"] = {
    _ = {
      ParentName = "StoneBlocksBase",
      DefCategory = "ThingDef",
      FileName = "Various_Stone.xml",
      DLC = "Core",
    },
    defName = "BlocksMarble",
    label = "marble blocks",
    description = [[Blocks of solid marble. Marble is a soft, beautiful stone, known for being easy to sculpt.]],
    statBases = {
      Mass = 1.25,
    },
    stuffProps = {
      statFactors = {
        Beauty = 1.35,
        MaxHitPoints = 1.2,
        WorkToBuild = 5.5,
        WorkToMake = 1.15,
      },
      statOffsets = {
        Beauty = 1,
      },
    },
  },

  ["ThingDef:BaseWeapon"] = {
    _ = {
      Abstract = true,
      Name = "BaseWeapon",
      DefCategory = "ThingDef",
      FileName = "BaseWeapons.xml",
      DLC = "Core",
    },
    thingClass = "ThingWithComps",
    category = "Item",
    altitudeLayer = "Item",
    useHitPoints = true,
    pathCost = 14,
    statBases = {
      MaxHitPoints = 100,
      Flammability = 1.0,
      DeteriorationRate = 2,
      Beauty = -3,
      SellPriceFactor = 0.20,
    },
    comps = {
      CompProperties_Forbiddable = {},
      {
        compClass = "CompEquippable",
      },
    },
  },

  ["ThingDef:BaseGun"] = {
    _ = {
      Name = "BaseGun",
      Abstract = true,
      ParentName = "BaseWeapon",
      DefCategory = "ThingDef",
      FileName = "BaseWeapons.xml",
      DLC = "Core",
    },
    smeltable = true,
    thingCategories = {
      "WeaponsRanged",
    },
    statBases = {
      Flammability = 0.5,
    },
    comps = {
      CompProperties_Art = {
        nameMaker = "NamerArtWeaponGun",
        descriptionMaker = "ArtDescription_WeaponGun",
        minQualityForArtistic = "Excellent",
      },
    },
  },

  ["ThingDef:BaseGunWithQuality"] = {
    _ = {
      Name = "BaseGunWithQuality",
      Abstract = true,
      ParentName = "BaseGun",
      DefCategory = "ThingDef",
      FileName = "BaseWeapons.xml",
      DLC = "Core",
    },
    comps = {
      {
        compClass = "CompQuality",
      },
    },
  },

  ["ThingDef:BaseMakeableGun"] = {
    _ = {
      Name = "BaseMakeableGun",
      ParentName = "BaseGunWithQuality",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "BaseWeapons.xml",
      DLC = "Core",
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Smith",
      recipeUsers = {
        "TableMachining",
      },
      unfinishedThingDef = "UnfinishedGun",
      researchPrerequisite = "Gunsmithing",
    },
  },

  ["ThingDef:BaseHumanMakeableGun"] = {
    _ = {
      Name = "BaseHumanMakeableGun",
      ParentName = "BaseMakeableGun",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "BaseWeapons.xml",
      DLC = "Core",
    },
    weaponTags = {
      "Gun",
    },
    comps = {
      CompProperties_BiocodableWeapon = {},
    },
  },

  ["ThingDef:BaseBullet"] = {
    _ = {
      Name = "BaseBullet",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "BaseWeapons.xml",
      DLC = "Core",
    },
    category = "Projectile",
    altitudeLayer = "Projectile",
    thingClass = "Bullet",
    label = "bullet",
    useHitPoints = false,
  },

  ["ThingDef:BaseMeleeWeapon"] = {
    _ = {
      Name = "BaseMeleeWeapon",
      Abstract = true,
      ParentName = "BaseWeapon",
      DefCategory = "ThingDef",
      FileName = "BaseWeapons.xml",
      DLC = "Core",
    },
    smeltable = true,
    thingCategories = {
      "WeaponsMelee",
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Smith",
      recipeUsers = {
        "ElectricSmithy",
        "FueledSmithy",
      },
      unfinishedThingDef = "UnfinishedWeapon",
    },
  },

  ["ThingDef:BaseMeleeWeapon_Sharp"] = {
    _ = {
      Name = "BaseMeleeWeapon_Sharp",
      ParentName = "BaseMeleeWeapon",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "BaseWeapons.xml",
      DLC = "Core",
    },
    recipeMaker = {
      defaultIngredientFilter = {
        categories = {
          "Root",
        },
        disallowedThingDefs = {
          "Silver",
          "Gold",
          "WoodLog",
        },
      },
    },
  },

  ["ThingDef:BaseMeleeWeapon_Blunt"] = {
    _ = {
      Name = "BaseMeleeWeapon_Blunt",
      ParentName = "BaseMeleeWeapon",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "BaseWeapons.xml",
      DLC = "Core",
    },
    recipeMaker = {
      defaultIngredientFilter = {
        categories = {
          "Root",
        },
        disallowedThingDefs = {
          "Silver",
          "Gold",
        },
      },
    },
  },

  ["ThingDef:BaseMeleeWeapon_Sharp_Quality"] = {
    _ = {
      Name = "BaseMeleeWeapon_Sharp_Quality",
      Abstract = true,
      ParentName = "BaseMeleeWeapon_Sharp",
      DefCategory = "ThingDef",
      FileName = "BaseWeapons.xml",
      DLC = "Core",
    },
    comps = {
      {
        compClass = "CompQuality",
      },
      CompProperties_Art = {
        nameMaker = "NamerArtWeaponMelee",
        descriptionMaker = "ArtDescription_WeaponMelee",
        minQualityForArtistic = "Excellent",
      },
    },
  },

  ["ThingDef:BaseMeleeWeapon_Blunt_Quality"] = {
    _ = {
      Name = "BaseMeleeWeapon_Blunt_Quality",
      Abstract = true,
      ParentName = "BaseMeleeWeapon_Sharp",
      DefCategory = "ThingDef",
      FileName = "BaseWeapons.xml",
      DLC = "Core",
    },
    comps = {
      {
        compClass = "CompQuality",
      },
      CompProperties_Art = {
        nameMaker = "NamerArtWeaponMelee",
        descriptionMaker = "ArtDescription_WeaponMelee",
        minQualityForArtistic = "Excellent",
      },
    },
  },

  ["ThingDef:MeleeWeapon_Mace"] = {
    _ = {
      ParentName = "BaseMeleeWeapon_Blunt_Quality",
      DefCategory = "ThingDef",
      FileName = "MeleeMedieval.xml",
      DLC = "Core",
    },
    defName = "MeleeWeapon_Mace",
    label = "mace",
    description = [[A refined club, engineered for efficient swinging and deadly impacts.]],
    statBases = {
      WorkToMake = 6000,
      Mass = 1.25,
    },
    recipeMaker = {
      skillRequirements = {
        Crafting = 3,
      },
    },
    weaponTags = {
      "MedievalMeleeDecent",
    },
    tools = {
      {
        label = "handle",
        capacities = {
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 15.7,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:MeleeWeapon_Gladius"] = {
    _ = {
      ParentName = "BaseMeleeWeapon_Sharp_Quality",
      DefCategory = "ThingDef",
      FileName = "MeleeMedieval.xml",
      DLC = "Core",
    },
    defName = "MeleeWeapon_Gladius",
    label = "gladius",
    description = [[A short sword of ancient design. Good for stabbing or slashing. It's light and nimble, which sometimes lets it beat bigger, heavier weapons.]],
    weaponTags = {
      "MedievalMeleeDecent",
    },
    statBases = {
      WorkToMake = 12000,
      Mass = 0.85,
    },
    tools = {
      {
        label = "handle",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "point",
        capacities = {
          "Stab",
        },
        power = 16,
        cooldownTime = 2,
      },
      {
        label = "edge",
        capacities = {
          "Cut",
        },
        power = 16,
        cooldownTime = 2,
      },
    },
    recipeMaker = {
      researchPrerequisite = "Smithing",
      skillRequirements = {
        Crafting = 3,
      },
    },
  },

  ["ThingDef:MeleeWeapon_LongSword"] = {
    _ = {
      ParentName = "BaseMeleeWeapon_Sharp_Quality",
      DefCategory = "ThingDef",
      FileName = "MeleeMedieval.xml",
      DLC = "Core",
    },
    defName = "MeleeWeapon_LongSword",
    label = "longsword",
    description = [[The ancient weapon of kings, the longsword can be used for slashing or stabbing.]],
    weaponTags = {
      "MedievalMeleeAdvanced",
    },
    statBases = {
      WorkToMake = 18000,
      Mass = 2,
    },
    tools = {
      {
        label = "handle",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "point",
        capacities = {
          "Stab",
        },
        power = 23,
        cooldownTime = 2.6,
      },
      {
        label = "edge",
        capacities = {
          "Cut",
        },
        power = 23,
        cooldownTime = 2.6,
      },
    },
    recipeMaker = {
      researchPrerequisite = "LongBlades",
      skillRequirements = {
        Crafting = 5,
      },
    },
  },

  ["ThingDef:MeleeWeapon_Club"] = {
    _ = {
      ParentName = "BaseMeleeWeapon_Blunt",
      DefCategory = "ThingDef",
      FileName = "MeleeNeolithic.xml",
      DLC = "Core",
    },
    defName = "MeleeWeapon_Club",
    label = "club",
    description = [[A shaped stick, heavy at one end, for bashing enemies to death. This weapon is so old it's part of human biology. Evolutionary biologists say that a major reason humans can tilt our wrists side-to-side (instead of just forward-and-back like other primates) is to be able to better swing a club.]],
    weaponTags = {
      "NeolithicMeleeBasic",
    },
    statBases = {
      WorkToMake = 1200,
      Mass = 2,
    },
    recipeMaker = {
      recipeUsers = {
        "CraftingSpot",
      },
    },
    tools = {
      {
        label = "handle",
        capacities = {
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 14,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:MeleeWeapon_Knife"] = {
    _ = {
      ParentName = "BaseMeleeWeapon_Sharp_Quality",
      DefCategory = "ThingDef",
      FileName = "MeleeNeolithic.xml",
      DLC = "Core",
    },
    defName = "MeleeWeapon_Knife",
    label = "knife",
    description = [[One of mankind's oldest manufactured objects. The knife has taken many forms, but the concept has always remained the same: A handle for holding and a sharp edge for cutting.]],
    weaponTags = {
      "MedievalMeleeBasic",
      "NeolithicMeleeBasic",
    },
    statBases = {
      WorkToMake = 1800,
      Mass = 0.5,
    },
    tools = {
      {
        label = "handle",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "blade",
        capacities = {
          "Cut",
        },
        power = 12,
        cooldownTime = 1.5,
      },
      {
        label = "point",
        capacities = {
          "Stab",
        },
        power = 13,
        cooldownTime = 2,
      },
    },
    recipeMaker = {
      recipeUsers = {
        "CraftingSpot",
      },
    },
  },

  ["ThingDef:MeleeWeapon_Ikwa"] = {
    _ = {
      ParentName = "BaseMeleeWeapon_Sharp_Quality",
      DefCategory = "ThingDef",
      FileName = "MeleeNeolithic.xml",
      DLC = "Core",
    },
    defName = "MeleeWeapon_Ikwa",
    label = "ikwa",
    description = [[A short spearhandle attached to a long bladed point, designed to be driven into vital organs with a quick thrust.]],
    weaponTags = {
      "NeolithicMeleeDecent",
    },
    statBases = {
      WorkToMake = 5000,
      Mass = 1.1,
    },
    tools = {
      {
        label = "handle",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "head",
        capacities = {
          "Stab",
        },
        power = 15,
        cooldownTime = 2,
      },
      {
        label = "edge",
        capacities = {
          "Cut",
        },
        power = 15,
        cooldownTime = 2,
      },
    },
    recipeMaker = {
      researchPrerequisite = "Smithing",
      skillRequirements = {
        Crafting = 3,
      },
    },
  },

  ["ThingDef:MeleeWeapon_Spear"] = {
    _ = {
      ParentName = "BaseMeleeWeapon_Sharp_Quality",
      DefCategory = "ThingDef",
      FileName = "MeleeNeolithic.xml",
      DLC = "Core",
    },
    defName = "MeleeWeapon_Spear",
    label = "spear",
    description = [[A polearm tipped with a sharp point for stabbing opponents.]],
    weaponTags = {
      "NeolithicMeleeAdvanced",
      "MedievalMeleeAdvanced",
    },
    statBases = {
      WorkToMake = 12000,
      Mass = 2,
    },
    tools = {
      {
        label = "shaft",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 13,
        cooldownTime = 2.6,
      },
      {
        label = "point",
        capacities = {
          "Stab",
        },
        power = 23,
        cooldownTime = 2.6,
      },
    },
    recipeMaker = {
      researchPrerequisite = "LongBlades",
      skillRequirements = {
        Crafting = 4,
      },
    },
  },

  ["ThingDef:Bullet_Revolver"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_Revolver",
    label = "revolver bullet",
  },

  ["ThingDef:Gun_Revolver"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_Revolver",
    label = "revolver",
    description = [[An ancient pattern double-action revolver. It's not very powerful, but has a decent range for a pistol and is quick on the draw.]],
    statBases = {
      WorkToMake = 4000,
      Mass = 1.4,
      AccuracyTouch = 0.80,
      AccuracyShort = 0.75,
      AccuracyMedium = 0.45,
      AccuracyLong = 0.35,
      RangedWeapon_Cooldown = 1.6,
    },
    weaponTags = {
      "SimpleGun",
      "Revolver",
    },
    costList = {
      Steel = 30,
      ComponentIndustrial = 2,
    },
    recipeMaker = {
      skillRequirements = {
        Crafting = 3,
      },
    },
    verbs = {
      {
        defaultProjectile = "Bullet_Revolver",
        warmupTime = 0.3,
        range = 25.9,
      },
    },
    tools = {
      {
        label = "grip",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Gun_Autopistol"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_Autopistol",
    label = "autopistol",
    description = [[An ancient pattern blowback-operated self-loading pistol. It lacks stopping power and range, but is quick to fire.]],
    recipeMaker = {
      researchPrerequisite = "BlowbackOperation",
      skillRequirements = {
        Crafting = 4,
      },
    },
    weaponTags = {
      "SimpleGun",
    },
    statBases = {
      WorkToMake = 5000,
      Mass = 1.2,
      AccuracyTouch = 0.80,
      AccuracyShort = 0.70,
      AccuracyMedium = 0.40,
      AccuracyLong = 0.30,
      RangedWeapon_Cooldown = 1,
    },
    costList = {
      Steel = 30,
      ComponentIndustrial = 2,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_Autopistol",
        warmupTime = 0.3,
        range = 25.9,
      },
    },
    tools = {
      {
        label = "grip",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_Autopistol"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_Autopistol",
    label = "autopistol bullet",
  },

  ["ThingDef:Gun_MachinePistol"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_MachinePistol",
    label = "machine pistol",
    description = [[A micro-submachine gun. It is short-ranged, but very light in the hands. Its rate of fire tends to make up for its weakness.]],
    recipeMaker = {
      researchPrerequisite = "BlowbackOperation",
      skillRequirements = {
        Crafting = 4,
      },
    },
    statBases = {
      WorkToMake = 11000,
      Mass = 2.5,
      AccuracyTouch = 0.90,
      AccuracyShort = 0.65,
      AccuracyMedium = 0.35,
      AccuracyLong = 0.15,
      RangedWeapon_Cooldown = 0.9,
    },
    costList = {
      Steel = 45,
      ComponentIndustrial = 3,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_MachinePistol",
        warmupTime = 0.5,
        range = 19.9,
        burstShotCount = 3,
        ticksBetweenBurstShots = 7,
      },
    },
    tools = {
      {
        label = "grip",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_MachinePistol"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_MachinePistol",
    label = "machine pistol bullet",
  },

  ["ThingDef:Gun_IncendiaryLauncher"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_IncendiaryLauncher",
    label = "incendiary launcher",
    description = [[A wide-barreled incendiary bolt launcher. The bolts create small incendiary explosions on impact, starting fires.]],
    statBases = {
      WorkToMake = 20000,
      Mass = 3.4,
      RangedWeapon_Cooldown = 3.5,
    },
    costList = {
      Steel = 75,
      ComponentIndustrial = 4,
    },
    recipeMaker = {
      skillRequirements = {
        Crafting = 4,
      },
    },
    verbs = {
      {
        defaultProjectile = "Bullet_IncendiaryLauncher",
        warmupTime = 3.5,
        range = 23.9,
        forcedMissRadius = 1.9,
        burstShotCount = 1,
        targetParams = {
          canTargetLocations = true,
        },
      },
    },
    tools = {
      {
        label = "stock",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_IncendiaryLauncher"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_IncendiaryLauncher",
    label = "incendiary bolt",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Gun_SmokeLauncher"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_SmokeLauncher",
    label = "smoke launcher",
    description = [[A wide-barreled smoke shell launcher. The shell will upon impact release a cloud of smoke, obscuring incoming shots and preventing turrets from locking on.]],
    statBases = {
      WorkToMake = 30000,
      Mass = 3.4,
      RangedWeapon_Cooldown = 4.5,
    },
    costList = {
      Steel = 75,
      ComponentIndustrial = 4,
    },
    weaponTags = {
      _ = {
        Inherit = false,
      },
      "GrenadeSmoke",
    },
    recipeMaker = {
      skillRequirements = {
        Crafting = 4,
      },
    },
    verbs = {
      {
        defaultProjectile = "Bullet_SmokeLauncher",
        warmupTime = 3.5,
        range = 23.9,
        forcedMissRadius = 1.9,
        burstShotCount = 1,
        targetParams = {
          canTargetLocations = true,
        },
      },
    },
    tools = {
      {
        label = "stock",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_SmokeLauncher"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_SmokeLauncher",
    label = "smoke launcher shell",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Gun_EmpLauncher"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_EmpLauncher",
    label = "EMP launcher",
    description = [[A wide-barreled EMP shell launcher. The shell will upon impact release a burst of electromagnetic energy, stunning mechanical targets (mechanoids, turrets, mortars) and depleting shields in the area of effect.]],
    weaponTags = {
      "GrenadeEMP",
    },
    statBases = {
      WorkToMake = 30000,
      Mass = 3.4,
      RangedWeapon_Cooldown = 3.5,
    },
    costList = {
      Steel = 75,
      ComponentIndustrial = 8,
    },
    recipeMaker = {
      skillRequirements = {
        Crafting = 4,
      },
      researchPrerequisite = "MicroelectronicsBasics",
    },
    verbs = {
      {
        defaultProjectile = "Bullet_EMPLauncher",
        warmupTime = 3.5,
        range = 23.9,
        forcedMissRadius = 1.9,
        burstShotCount = 1,
        targetParams = {
          canTargetLocations = true,
        },
      },
    },
    tools = {
      {
        label = "stock",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_EMPLauncher"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_EMPLauncher",
    label = "EMP launcher shell",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Gun_BoltActionRifle"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_BoltActionRifle",
    label = "bolt-action rifle",
    description = [[An ancient pattern bolt-action rifle. With its long range, and low fire rate, it is unlikely to drive animals to revenge, which makes it a favorite weapon for hunting.]],
    statBases = {
      WorkToMake = 12000,
      Mass = 3.5,
      AccuracyTouch = 0.65,
      AccuracyShort = 0.80,
      AccuracyMedium = 0.90,
      AccuracyLong = 0.80,
      RangedWeapon_Cooldown = 1.5,
    },
    costList = {
      Steel = 60,
      ComponentIndustrial = 3,
    },
    recipeMaker = {
      skillRequirements = {
        Crafting = 5,
      },
    },
    verbs = {
      {
        defaultProjectile = "Bullet_BoltActionRifle",
        warmupTime = 1.7,
        range = 36.9,
      },
    },
    tools = {
      {
        label = "stock",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_BoltActionRifle"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_BoltActionRifle",
    label = "bolt-action rifle bullet",
  },

  ["ThingDef:Gun_PumpShotgun"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_PumpShotgun",
    label = "pump shotgun",
    description = [[An ancient design of shotgun that emits a tight-packed spray of pellets. Deadly, but short range.]],
    statBases = {
      WorkToMake = 12000,
      Mass = 3.4,
      AccuracyTouch = 0.80,
      AccuracyShort = 0.87,
      AccuracyMedium = 0.77,
      AccuracyLong = 0.64,
      RangedWeapon_Cooldown = 1.25,
    },
    costList = {
      Steel = 60,
      ComponentIndustrial = 3,
    },
    recipeMaker = {
      skillRequirements = {
        Crafting = 5,
      },
    },
    verbs = {
      {
        defaultProjectile = "Bullet_Shotgun",
        warmupTime = 0.9,
        range = 15.9,
      },
    },
    tools = {
      {
        label = "stock",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_Shotgun"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_Shotgun",
    label = "shotgun blast",
  },

  ["ThingDef:Gun_ChainShotgun"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_ChainShotgun",
    label = "chain shotgun",
    description = [[A magazine-fed fully automatic shotgun. It is even shorter-ranged than a typical shotgun, but is extraordinarily dangerous due to burst fire.]],
    recipeMaker = {
      researchPrerequisite = "GasOperation",
      skillRequirements = {
        Crafting = 6,
      },
    },
    statBases = {
      WorkToMake = 31000,
      Mass = 4.5,
      AccuracyTouch = 0.57,
      AccuracyShort = 0.64,
      AccuracyMedium = 0.55,
      AccuracyLong = 0.45,
      RangedWeapon_Cooldown = 1.35,
    },
    costList = {
      Steel = 70,
      ComponentIndustrial = 5,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_Shotgun",
        warmupTime = 1.2,
        range = 12.9,
        burstShotCount = 3,
        ticksBetweenBurstShots = 10,
      },
    },
    weaponTags = {
      "IndustrialGunAdvanced",
    },
    tools = {
      {
        label = "stock",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Gun_HeavySMG"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_HeavySMG",
    label = "heavy SMG",
    description = [[A compact, wide-caliber slug-thrower. It's got a very short range, but it packs a punch and handles quite well.]],
    recipeMaker = {
      researchPrerequisite = "GasOperation",
      skillRequirements = {
        Crafting = 5,
      },
    },
    statBases = {
      WorkToMake = 24000,
      Mass = 3.5,
      AccuracyTouch = 0.85,
      AccuracyShort = 0.65,
      AccuracyMedium = 0.35,
      AccuracyLong = 0.20,
      RangedWeapon_Cooldown = 1.65,
    },
    costList = {
      Steel = 75,
      ComponentIndustrial = 4,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_HeavySMG",
        warmupTime = 0.9,
        range = 22.9,
        burstShotCount = 3,
        ticksBetweenBurstShots = 11,
      },
    },
    weaponTags = {
      "IndustrialGunAdvanced",
    },
    tools = {
      {
        label = "grip",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_HeavySMG"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_HeavySMG",
    label = "heavy SMG bullet",
  },

  ["ThingDef:Gun_LMG"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_LMG",
    label = "LMG",
    description = [[A gas-operated light machine gun. While it is somewhat unwieldy and inaccurate, its long bursts of fire are effective against groups of enemies.]],
    recipeMaker = {
      researchPrerequisite = "GasOperation",
      skillRequirements = {
        Crafting = 6,
      },
    },
    statBases = {
      WorkToMake = 34000,
      Mass = 8.5,
      AccuracyTouch = 0.40,
      AccuracyShort = 0.48,
      AccuracyMedium = 0.35,
      AccuracyLong = 0.26,
      RangedWeapon_Cooldown = 1.8,
    },
    costList = {
      Steel = 75,
      ComponentIndustrial = 5,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_LMG",
        warmupTime = 1.8,
        range = 25.9,
        ticksBetweenBurstShots = 7,
        burstShotCount = 6,
      },
    },
    weaponTags = {
      "IndustrialGunAdvanced",
    },
    tools = {
      {
        label = "stock",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_LMG"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_LMG",
    label = "LMG bullet",
  },

  ["ThingDef:Gun_AssaultRifle"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_AssaultRifle",
    label = "assault rifle",
    description = [[A general-purpose gas-operated assault rifle for field or urban combat. It has good range, decent power, and good accuracy.]],
    recipeMaker = {
      researchPrerequisite = "PrecisionRifling",
      skillRequirements = {
        Crafting = 6,
      },
    },
    statBases = {
      WorkToMake = 40000,
      Mass = 3.5,
      AccuracyTouch = 0.60,
      AccuracyShort = 0.70,
      AccuracyMedium = 0.65,
      AccuracyLong = 0.55,
      RangedWeapon_Cooldown = 1.70,
    },
    costList = {
      Steel = 60,
      ComponentIndustrial = 7,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_AssaultRifle",
        warmupTime = 1.0,
        range = 30.9,
        burstShotCount = 3,
        ticksBetweenBurstShots = 10,
      },
    },
    weaponTags = {
      "IndustrialGunAdvanced",
    },
    tools = {
      {
        label = "stock",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_AssaultRifle"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_AssaultRifle",
    label = "assault rifle bullet",
  },

  ["ThingDef:Gun_SniperRifle"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_SniperRifle",
    label = "sniper rifle",
    description = [[An ancient design of precision sniper rifle. Bolt action. It has an exceptionally long range, great accuracy and good power. Because it's so unwieldy, other weapons outclass it at close range.]],
    recipeMaker = {
      researchPrerequisite = "PrecisionRifling",
      skillRequirements = {
        Crafting = 7,
      },
    },
    statBases = {
      WorkToMake = 45000,
      Mass = 4,
      AccuracyTouch = 0.50,
      AccuracyShort = 0.70,
      AccuracyMedium = 0.86,
      AccuracyLong = 0.88,
      RangedWeapon_Cooldown = 2.3,
    },
    costList = {
      Steel = 60,
      ComponentIndustrial = 8,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_SniperRifle",
        warmupTime = 3.5,
        range = 44.9,
      },
    },
    tools = {
      {
        label = "stock",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
    weaponTags = {
      _ = {
        Inherit = false,
      },
      "SniperRifle",
    },
  },

  ["ThingDef:Bullet_SniperRifle"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_SniperRifle",
    label = "sniper rifle bullet",
  },

  ["ThingDef:Gun_Minigun"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Gun_Minigun",
    label = "minigun",
    description = [[A multi-barrel machine gun. It's unwieldy, but once it starts firing it fires very fast. Where most self-loading guns are powered by the energy from the gunpowder, the minigun uses an electric motor to rapidly cycle cartridges through the weapon.]],
    statBases = {
      WorkToMake = 60000,
      Mass = 10,
      AccuracyTouch = 0.15,
      AccuracyShort = 0.25,
      AccuracyMedium = 0.25,
      AccuracyLong = 0.18,
      RangedWeapon_Cooldown = 2.3,
    },
    costList = {
      Steel = 160,
      ComponentIndustrial = 20,
    },
    recipeMaker = {
      researchPrerequisite = "MultibarrelWeapons",
      skillRequirements = {
        Crafting = 7,
      },
    },
    weaponTags = {
      "GunHeavy",
    },
    verbs = {
      {
        defaultProjectile = "Bullet_Minigun",
        warmupTime = 2.5,
        range = 30.9,
        burstShotCount = 25,
        ticksBetweenBurstShots = 5,
      },
    },
    tools = {
      {
        label = "barrels",
        capacities = {
          "Blunt",
        },
        power = 11.7,
        cooldownTime = 2.6,
      },
    },
  },

  ["ThingDef:Bullet_Minigun"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrial.xml",
      DLC = "Core",
    },
    defName = "Bullet_Minigun",
    label = "minigun bullet",
  },

  ["ThingDef:Gun_TripleRocket"] = {
    _ = {
      ParentName = "BaseGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialConsumable.xml",
      DLC = "Core",
    },
    defName = "Gun_TripleRocket",
    label = "triple rocket launcher",
    description = [[A single-use rocket launcher that fires three large-bore explosive rockets. Good against small groups of tough targets.\n\nBecause of its unwieldiness, single-use limitation, and the massive destruction it causes, it's said that one must be slightly crazy to use this weapon.]],
    statBases = {
      MarketValue = 1000,
      Mass = 7,
      RangedWeapon_Cooldown = 4.5,
    },
    weaponTags = {
      "Gun",
      "GunSingleUse",
    },
    tradeTags = {
      "ExoticMisc",
    },
    verbs = {
      {
        defaultProjectile = "Bullet_Rocket",
        forcedMissRadius = 2.9,
        warmupTime = 4.5,
        range = 35.9,
        ticksBetweenBurstShots = 20,
        burstShotCount = 3,
        onlyManualCast = true,
        stopBurstWithoutLos = false,
        targetParams = {
          canTargetLocations = true,
        },
      },
    },
    tools = {
      {
        label = "barrel",
        capacities = {
          "Blunt",
        },
        power = 11.7,
        cooldownTime = 2.6,
      },
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 3.9,
        explosiveDamageType = "Bomb",
        requiredDamageTypeToExplode = "Flame",
      },
      CompProperties_BiocodableWeapon = {},
    },
  },

  ["ThingDef:Bullet_Rocket"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialConsumable.xml",
      DLC = "Core",
    },
    defName = "Bullet_Rocket",
    label = "rocket",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Gun_DoomsdayRocket"] = {
    _ = {
      ParentName = "BaseGun",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialConsumable.xml",
      DLC = "Core",
    },
    defName = "Gun_DoomsdayRocket",
    label = "doomsday rocket launcher",
    description = [[A single-use rocket launcher that fires a massive explosive projectile. Good against large groups of soft targets. Starts fires.\n\nBecause of its unwieldiness, single-use limitation, and the massive destruction it causes, it's said that one must be slightly crazy to use this weapon.]],
    statBases = {
      MarketValue = 1000,
      Mass = 8,
      RangedWeapon_Cooldown = 4.5,
    },
    weaponTags = {
      "Gun",
      "GunSingleUse",
    },
    tradeTags = {
      "ExoticMisc",
    },
    verbs = {
      {
        defaultProjectile = "Bullet_DoomsdayRocket",
        forcedMissRadius = 1.9,
        warmupTime = 4.5,
        range = 35.9,
        burstShotCount = 1,
        onlyManualCast = true,
        targetParams = {
          canTargetLocations = true,
        },
      },
    },
    tools = {
      {
        label = "barrel",
        capacities = {
          "Blunt",
        },
        power = 11.7,
        cooldownTime = 2.6,
      },
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 7.8,
        explosiveDamageType = "Bomb",
        requiredDamageTypeToExplode = "Flame",
      },
      CompProperties_BiocodableWeapon = {},
    },
  },

  ["ThingDef:Bullet_DoomsdayRocket"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialConsumable.xml",
      DLC = "Core",
    },
    defName = "Bullet_DoomsdayRocket",
    label = "doomsday rocket",
    thingClass = "Projectile_DoomsdayRocket",
  },

  ["ThingDef:BaseGrenadeProjectile"] = {
    _ = {
      Name = "BaseGrenadeProjectile",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialGrenades.xml",
      DLC = "Core",
    },
    category = "Projectile",
    altitudeLayer = "Projectile",
    thingClass = "Projectile_Explosive",
    label = "projectile",
    useHitPoints = false,
  },

  ["ThingDef:BaseMakeableGrenade"] = {
    _ = {
      Name = "BaseMakeableGrenade",
      ParentName = "BaseWeapon",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialGrenades.xml",
      DLC = "Core",
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Smith",
      recipeUsers = {
        "TableMachining",
      },
      unfinishedThingDef = "UnfinishedGun",
    },
  },

  ["ThingDef:Weapon_GrenadeFrag"] = {
    _ = {
      ParentName = "BaseMakeableGrenade",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialGrenades.xml",
      DLC = "Core",
    },
    defName = "Weapon_GrenadeFrag",
    label = "frag grenades",
    description = [[Old-school fragmentation grenades. They can be thrown a short distance, where they'll explode, damaging anything and anyone nearby.]],
    statBases = {
      Mass = 1,
      RangedWeapon_Cooldown = 2.66,
      WorkToMake = 12000,
    },
    costList = {
      Steel = 20,
      Chemfuel = 80,
    },
    weaponTags = {
      "GrenadeDestructive",
    },
    thingCategories = {
      "Grenades",
    },
    verbs = {
      {
        label = "throw frag grenade",
        range = 12.9,
        forcedMissRadius = 1.9,
        warmupTime = 1.5,
        noiseRadius = 4,
        targetParams = {
          canTargetLocations = true,
        },
        defaultProjectile = "Proj_GrenadeFrag",
      },
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 2.66,
        explosiveDamageType = "Bomb",
        requiredDamageTypeToExplode = "Flame",
      },
    },
  },

  ["ThingDef:BaseFragGrenadeProjectile"] = {
    _ = {
      Name = "BaseFragGrenadeProjectile",
      ParentName = "BaseGrenadeProjectile",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialGrenades.xml",
      DLC = "Core",
    },
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Proj_GrenadeFrag"] = {
    _ = {
      ParentName = "BaseFragGrenadeProjectile",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialGrenades.xml",
      DLC = "Core",
    },
    defName = "Proj_GrenadeFrag",
    label = "frag grenade",
  },

  ["ThingDef:Weapon_GrenadeMolotov"] = {
    _ = {
      ParentName = "BaseMakeableGrenade",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialGrenades.xml",
      DLC = "Core",
    },
    defName = "Weapon_GrenadeMolotov",
    label = "molotov cocktails",
    description = [[Glass bottles filled with flammable liquid, with a burning cloth in the neck. A favorite weapon of hooligans and desperate warriors from rim to rim.]],
    statBases = {
      Mass = 1,
      RangedWeapon_Cooldown = 2.66,
      WorkToMake = 6000,
    },
    costList = {
      Cloth = 25,
      Chemfuel = 80,
    },
    weaponTags = {
      "GrenadeDestructive",
    },
    thingCategories = {
      "Grenades",
    },
    verbs = {
      {
        label = "throw molotov",
        range = 12.9,
        forcedMissRadius = 1.9,
        warmupTime = 1.5,
        noiseRadius = 4,
        targetParams = {
          canTargetLocations = true,
        },
        defaultProjectile = "Proj_GrenadeMolotov",
      },
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 2.66,
        explosiveDamageType = "Flame",
        requiredDamageTypeToExplode = "Flame",
      },
    },
  },

  ["ThingDef:Proj_GrenadeMolotov"] = {
    _ = {
      ParentName = "BaseIncendiaryProjectile",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialGrenades.xml",
      DLC = "Core",
    },
    defName = "Proj_GrenadeMolotov",
    label = "molotov cocktail",
  },

  ["ThingDef:Weapon_GrenadeEMP"] = {
    _ = {
      ParentName = "BaseMakeableGrenade",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialGrenades.xml",
      DLC = "Core",
    },
    defName = "Weapon_GrenadeEMP",
    label = "EMP grenades",
    description = [[Electromagnetic pulse grenades damaging to electronic equipment.]],
    statBases = {
      Mass = 1,
      RangedWeapon_Cooldown = 2.66,
      WorkToMake = 24000,
    },
    costList = {
      Steel = 20,
      ComponentIndustrial = 6,
    },
    recipeMaker = {
      researchPrerequisite = "MicroelectronicsBasics",
    },
    weaponTags = {
      "GrenadeEMP",
    },
    thingCategories = {
      "Grenades",
    },
    verbs = {
      {
        label = "throw EMP grenade",
        range = 12.9,
        forcedMissRadius = 1.9,
        warmupTime = 1.5,
        noiseRadius = 4,
        targetParams = {
          canTargetLocations = true,
        },
        defaultProjectile = "Proj_GrenadeEMP",
      },
    },
    comps = {
      CompProperties_Explosive = {
        explosiveRadius = 2.66,
        explosiveDamageType = "EMP",
        requiredDamageTypeToExplode = "Flame",
      },
    },
    smeltProducts = {
      Steel = 10,
    },
  },

  ["ThingDef:Proj_GrenadeEMP"] = {
    _ = {
      ParentName = "BaseGrenadeProjectile",
      DefCategory = "ThingDef",
      FileName = "RangedIndustrialGrenades.xml",
      DLC = "Core",
    },
    defName = "Proj_GrenadeEMP",
    label = "EMP grenade",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Bullet_ChargeBlasterHeavy"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedMechanoid.xml",
      DLC = "Core",
    },
    defName = "Bullet_ChargeBlasterHeavy",
    label = "charge blaster shot",
  },

  ["ThingDef:Gun_ChargeBlasterHeavyBase"] = {
    _ = {
      Abstract = true,
      ParentName = "BaseGunWithQuality",
      Name = "Gun_ChargeBlasterHeavyBase",
      DefCategory = "ThingDef",
      FileName = "RangedMechanoid.xml",
      DLC = "Core",
    },
    label = "heavy charge blaster",
    description = [[A pulse-charged rapid-fire blaster for area suppressive fire. Heavy cooling allows long, deadly bursts.]],
    statBases = {
      MarketValue = 1400,
      Mass = 22,
      AccuracyTouch = 0.18,
      AccuracyShort = 0.26,
      AccuracyMedium = 0.26,
      AccuracyLong = 0.18,
      RangedWeapon_Cooldown = 7.4,
    },
    tradeability = "None",
    tools = {
      {
        label = "barrel",
        capacities = {
          "Blunt",
        },
        power = 11.7,
        cooldownTime = 2.6,
      },
    },
  },

  ["ThingDef:Gun_ChargeBlasterHeavy"] = {
    _ = {
      ParentName = "Gun_ChargeBlasterHeavyBase",
      DefCategory = "ThingDef",
      FileName = "RangedMechanoid.xml",
      DLC = "Core",
    },
    defName = "Gun_ChargeBlasterHeavy",
    verbs = {
      {
        defaultProjectile = "Bullet_ChargeBlasterHeavy",
        warmupTime = 1.25,
        range = 26.9,
        ticksBetweenBurstShots = 5,
        burstShotCount = 24,
      },
    },
    weaponTags = {
      "MechanoidGunHeavy",
    },
  },

  ["ThingDef:Bullet_InfernoCannon"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedMechanoid.xml",
      DLC = "Core",
    },
    defName = "Bullet_InfernoCannon",
    label = "inferno cannon shell",
    thingClass = "Projectile_Explosive",
  },

  ["ThingDef:Gun_InfernoCannonBase"] = {
    _ = {
      Abstract = true,
      ParentName = "BaseGunWithQuality",
      Name = "Gun_InfernoCannonBase",
      DefCategory = "ThingDef",
      FileName = "RangedMechanoid.xml",
      DLC = "Core",
    },
    label = "inferno cannon",
    description = [[An incendiary-shot mini-artillery device. It fires a large incendiary warhead.]],
    statBases = {
      MarketValue = 1400,
      Mass = 18,
      RangedWeapon_Cooldown = 8.4,
    },
    tradeability = "None",
    tools = {
      {
        label = "barrel",
        capacities = {
          "Blunt",
        },
        power = 11.7,
        cooldownTime = 2.6,
      },
    },
  },

  ["ThingDef:Gun_InfernoCannon"] = {
    _ = {
      ParentName = "Gun_InfernoCannonBase",
      DefCategory = "ThingDef",
      FileName = "RangedMechanoid.xml",
      DLC = "Core",
    },
    defName = "Gun_InfernoCannon",
    weaponTags = {
      "MechanoidGunHeavy",
    },
    verbs = {
      {
        defaultProjectile = "Bullet_InfernoCannon",
        forcedMissRadius = 3.5,
        warmupTime = 1.25,
        range = 26.9,
        burstShotCount = 1,
      },
    },
  },

  ["ThingDef:Gun_Needle"] = {
    _ = {
      ParentName = "BaseGunWithQuality",
      DefCategory = "ThingDef",
      FileName = "RangedMechanoid.xml",
      DLC = "Core",
    },
    defName = "Gun_Needle",
    label = "needle gun",
    description = [[A long-range weapon used by mechanoids. Named after its needle-like projectiles, it fires single shots with great accuracy. While it does less damage than charge weapons, it can reach over very long distances.]],
    tradeability = "None",
    statBases = {
      MarketValue = 1400,
      Mass = 2.6,
      AccuracyTouch = 0.60,
      AccuracyShort = 0.80,
      AccuracyMedium = 0.90,
      AccuracyLong = 0.85,
      RangedWeapon_Cooldown = 2.1,
    },
    weaponTags = {
      "MechanoidGunLongRange",
    },
    verbs = {
      {
        defaultProjectile = "Bullet_NeedleGun",
        warmupTime = 2.5,
        range = 44.9,
      },
    },
    tools = {
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2.6,
      },
    },
  },

  ["ThingDef:Bullet_NeedleGun"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedMechanoid.xml",
      DLC = "Core",
    },
    defName = "Bullet_NeedleGun",
    label = "needle shot",
  },

  ["ThingDef:BaseWeaponNeolithic"] = {
    _ = {
      Name = "BaseWeaponNeolithic",
      Abstract = true,
      ParentName = "BaseWeapon",
      DefCategory = "ThingDef",
      FileName = "RangedNeolithic.xml",
      DLC = "Core",
    },
    weaponTags = {
      "Neolithic",
    },
    thingCategories = {
      "WeaponsRanged",
    },
    comps = {
      {
        compClass = "CompQuality",
      },
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      recipeUsers = {
        "ElectricSmithy",
        "FueledSmithy",
      },
      effectWorking = "Smelt",
      soundWorking = "Recipe_MakeBow",
      unfinishedThingDef = "UnfinishedWeapon",
    },
  },

  ["ThingDef:BaseProjectileNeolithic"] = {
    _ = {
      Name = "BaseProjectileNeolithic",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "RangedNeolithic.xml",
      DLC = "Core",
    },
    category = "Projectile",
    altitudeLayer = "Projectile",
    thingClass = "Bullet",
    label = "arrow",
    useHitPoints = false,
  },

  ["ThingDef:Bow_Short"] = {
    _ = {
      ParentName = "BaseWeaponNeolithic",
      DefCategory = "ThingDef",
      FileName = "RangedNeolithic.xml",
      DLC = "Core",
    },
    defName = "Bow_Short",
    label = "short bow",
    description = [[A simple short selfbow made from a single piece of wood.]],
    costList = {
      WoodLog = 30,
    },
    statBases = {
      WorkToMake = 2400,
      Mass = 0.8,
      AccuracyTouch = 0.75,
      AccuracyShort = 0.65,
      AccuracyMedium = 0.45,
      AccuracyLong = 0.25,
      RangedWeapon_Cooldown = 1.65,
    },
    weaponTags = {
      "NeolithicRangedBasic",
    },
    recipeMaker = {
      recipeUsers = {
        "CraftingSpot",
      },
      skillRequirements = {
        Crafting = 2,
      },
    },
    verbs = {
      {
        defaultProjectile = "Arrow_Short",
        warmupTime = 1.35,
        range = 22.9,
      },
    },
    tools = {
      {
        label = "limb",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Arrow_Short"] = {
    _ = {
      ParentName = "BaseProjectileNeolithic",
      DefCategory = "ThingDef",
      FileName = "RangedNeolithic.xml",
      DLC = "Core",
    },
    defName = "Arrow_Short",
    label = "shortbow arrow",
  },

  ["ThingDef:Pila"] = {
    _ = {
      ParentName = "BaseWeaponNeolithic",
      DefCategory = "ThingDef",
      FileName = "RangedNeolithic.xml",
      DLC = "Core",
    },
    defName = "Pila",
    label = "pila",
    description = [[Pila are spears for throwing. They take a long time to throw, but one hit can do heavy damage. This weapon represents a bundle of pila and can be thrown over and over. The singular of pila is pilum.]],
    costList = {
      WoodLog = 70,
    },
    statBases = {
      WorkToMake = 7000,
      Mass = 4,
      AccuracyTouch = 0.50,
      AccuracyShort = 0.71,
      AccuracyMedium = 0.50,
      AccuracyLong = 0.32,
      RangedWeapon_Cooldown = 4,
    },
    weaponTags = {
      "NeolithicRangedHeavy",
    },
    recipeMaker = {
      skillRequirements = {
        Crafting = 3,
      },
    },
    verbs = {
      {
        defaultProjectile = "Pilum_Thrown",
        warmupTime = 4,
        range = 18.9,
      },
    },
    tools = {
      {
        label = "shaft",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "point",
        capacities = {
          "Stab",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Pilum_Thrown"] = {
    _ = {
      ParentName = "BaseProjectileNeolithic",
      DefCategory = "ThingDef",
      FileName = "RangedNeolithic.xml",
      DLC = "Core",
    },
    defName = "Pilum_Thrown",
    label = "pilum",
  },

  ["ThingDef:Bow_Recurve"] = {
    _ = {
      ParentName = "BaseWeaponNeolithic",
      DefCategory = "ThingDef",
      FileName = "RangedNeolithic.xml",
      DLC = "Core",
    },
    defName = "Bow_Recurve",
    label = "recurve bow",
    description = [[A recurve bow. Its construction behaves like a tuned spring, storing energy more efficiently and delivering a faster shot.]],
    costList = {
      WoodLog = 40,
    },
    statBases = {
      WorkToMake = 5000,
      Mass = 1.3,
      AccuracyTouch = 0.70,
      AccuracyShort = 0.78,
      AccuracyMedium = 0.65,
      AccuracyLong = 0.35,
      RangedWeapon_Cooldown = 1.65,
    },
    weaponTags = {
      "NeolithicRangedDecent",
    },
    recipeMaker = {
      recipeUsers = {
        "CraftingSpot",
      },
      researchPrerequisite = "RecurveBow",
      skillRequirements = {
        Crafting = 5,
      },
    },
    verbs = {
      {
        defaultProjectile = "Arrow_Recurve",
        warmupTime = 1.45,
        range = 25.9,
      },
    },
    tools = {
      {
        label = "limb",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Arrow_Recurve"] = {
    _ = {
      ParentName = "BaseProjectileNeolithic",
      DefCategory = "ThingDef",
      FileName = "RangedNeolithic.xml",
      DLC = "Core",
    },
    defName = "Arrow_Recurve",
    label = "recurve bow arrow",
  },

  ["ThingDef:Bow_Great"] = {
    _ = {
      ParentName = "BaseWeaponNeolithic",
      DefCategory = "ThingDef",
      FileName = "RangedNeolithic.xml",
      DLC = "Core",
    },
    defName = "Bow_Great",
    label = "greatbow",
    description = [[A powerful greatbow. Fires a heavy arrow long distances.]],
    costList = {
      WoodLog = 60,
    },
    statBases = {
      WorkToMake = 9000,
      Mass = 3.0,
      AccuracyTouch = 0.65,
      AccuracyShort = 0.85,
      AccuracyMedium = 0.75,
      AccuracyLong = 0.50,
      RangedWeapon_Cooldown = 1.5,
    },
    weaponTags = {
      "NeolithicRangedHeavy",
      "NeolithicRangedChief",
    },
    verbs = {
      {
        defaultProjectile = "Arrow_Great",
        warmupTime = 2.0,
        range = 29.9,
      },
    },
    tools = {
      {
        label = "limb",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
    recipeMaker = {
      recipeUsers = {
        "CraftingSpot",
      },
      researchPrerequisite = "Greatbow",
      skillRequirements = {
        Crafting = 6,
      },
    },
  },

  ["ThingDef:Arrow_Great"] = {
    _ = {
      ParentName = "BaseProjectileNeolithic",
      DefCategory = "ThingDef",
      FileName = "RangedNeolithic.xml",
      DLC = "Core",
    },
    defName = "Arrow_Great",
    label = "greatbow arrow",
  },

  ["ThingDef:Gun_ChargeRifle"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedSpacer.xml",
      DLC = "Core",
    },
    defName = "Gun_ChargeRifle",
    label = "charge rifle",
    description = [[A charged-shot assault rifle. Pulse-charge technology charges each shot with unstable energy as it leaves the barrel. Released on impact, the charged energy greatly increases the damage done.]],
    statBases = {
      WorkToMake = 45000,
      Mass = 4.6,
      AccuracyTouch = 0.55,
      AccuracyShort = 0.64,
      AccuracyMedium = 0.55,
      AccuracyLong = 0.45,
      RangedWeapon_Cooldown = 2.00,
    },
    recipeMaker = {
      researchPrerequisite = "ChargedShot",
      skillRequirements = {
        Crafting = 7,
      },
      recipeUsers = {
        _ = {
          Inherit = false,
        },
        "FabricationBench",
      },
    },
    costList = {
      Plasteel = 50,
      ComponentSpacer = 2,
    },
    weaponTags = {
      "SpacerGun",
    },
    verbs = {
      {
        defaultProjectile = "Bullet_ChargeRifle",
        warmupTime = 1.0,
        range = 25.9,
        ticksBetweenBurstShots = 12,
        burstShotCount = 3,
      },
    },
    tools = {
      {
        label = "stock",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_ChargeRifle"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedSpacer.xml",
      DLC = "Core",
    },
    defName = "Bullet_ChargeRifle",
    label = "charge shot",
  },

  ["ThingDef:Gun_ChargeLance"] = {
    _ = {
      ParentName = "BaseHumanMakeableGun",
      DefCategory = "ThingDef",
      FileName = "RangedSpacer.xml",
      DLC = "Core",
    },
    defName = "Gun_ChargeLance",
    label = "charge lance",
    description = [[A pulse-charged rail-assisted lance weapon. It fires a single shot at high velocity, charging it with unstable energy as it leaves the acceleration rail.]],
    statBases = {
      Mass = 8,
      AccuracyTouch = 0.65,
      AccuracyShort = 0.85,
      AccuracyMedium = 0.85,
      AccuracyLong = 0.75,
      RangedWeapon_Cooldown = 2.7,
      WorkToMake = 60000,
    },
    recipeMaker = {
      researchPrerequisite = "ChargedShot",
      skillRequirements = {
        Crafting = 9,
      },
      recipeUsers = {
        _ = {
          Inherit = false,
        },
        "FabricationBench",
      },
    },
    costList = {
      Plasteel = 60,
      ComponentSpacer = 3,
    },
    weaponTags = {
      "MechanoidGunMedium",
      "SpacerGun",
    },
    verbs = {
      {
        defaultProjectile = "Bullet_ChargeLance",
        warmupTime = 1.7,
        range = 29.9,
      },
    },
    tools = {
      {
        label = "barrel",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:Bullet_ChargeLance"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "RangedSpacer.xml",
      DLC = "Core",
    },
    defName = "Bullet_ChargeLance",
    label = "charge lance shot",
  },

  ["ThingDef:OrbitalWeaponBase"] = {
    _ = {
      ParentName = "BaseWeapon",
      Name = "OrbitalWeaponBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "RangedSpecial.xml",
      DLC = "Core",
    },
    thingCategories = {
      "WeaponsRanged",
    },
    statBases = {
      MarketValue = 1200,
      Mass = 0.2,
      Beauty = -3,
      Flammability = 0.5,
    },
    tradeability = "Sellable",
    tradeTags = {
      "ExoticMisc",
    },
  },

  ["ThingDef:OrbitalUtilityBase"] = {
    _ = {
      ParentName = "ApparelNoQualityBase",
      Name = "OrbitalUtilityBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "RangedSpecial.xml",
      DLC = "Core",
    },
    thingCategories = {
      "ApparelUtility",
    },
    statBases = {
      MarketValue = 1200,
      Mass = 0.2,
      Beauty = -3,
      Flammability = 0.5,
    },
    tradeability = "Sellable",
    tradeTags = {
      "ExoticMisc",
    },
    apparel = {
      bodyPartGroups = {
        "Waist",
      },
      layers = {
        "Belt",
      },
    },
  },

  ["ThingDef:OrbitalTargeterBombardment"] = {
    _ = {
      ParentName = "OrbitalUtilityBase",
      DefCategory = "ThingDef",
      FileName = "RangedSpecial.xml",
      DLC = "Core",
    },
    defName = "OrbitalTargeterBombardment",
    label = "orbital bombardment targeter",
    description = [[An ancient targeting apparatus for an orbital bombardment system. This unit designates a target and transmits the coordinates to a network of satellites, which then bombard the target area with kinetic impactors. This unit has been reprogrammed to accept unauthorized users, but once it is used, the network will detect the incursion and cut off the link permanently.]],
    verbs = {
      {
        warmupTime = 3,
        range = 44.9,
        burstShotCount = 1,
        onlyManualCast = true,
        targetParams = {
          canTargetLocations = true,
        },
      },
    },
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 1,
        destroyOnEmpty = true,
        hotKey = "Misc4",
        chargeNoun = "charge",
        displayGizmoWhileUndrafted = false,
      },
    },
  },

  ["ThingDef:OrbitalTargeterPowerBeam"] = {
    _ = {
      ParentName = "OrbitalUtilityBase",
      DefCategory = "ThingDef",
      FileName = "RangedSpecial.xml",
      DLC = "Core",
    },
    defName = "OrbitalTargeterPowerBeam",
    label = "orbital power beam targeter",
    description = [[An ancient targeting unit for a network of power-collection satellites. Once aimed at a target, it directs ancient satellites to begin beaming power down in a massive column of electromagnetic energy. This power can safely be collected in a giant absorption dish. Since you have no absorption dish, you'll be aiming it at enemies, at which point the power column will turn the area into a thousand-degree inferno. This will last until the satellites detect the unsafe targeting, shut themselves down, and permanently deactivate the targeter.]],
    verbs = {
      {
        warmupTime = 3,
        range = 44.9,
        burstShotCount = 1,
        onlyManualCast = true,
        targetParams = {
          canTargetLocations = true,
        },
      },
    },
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 1,
        destroyOnEmpty = true,
        hotKey = "Misc4",
        chargeNoun = "charge",
        displayGizmoWhileUndrafted = false,
      },
    },
  },

  ["ThingDef:TornadoGenerator"] = {
    _ = {
      ParentName = "OrbitalUtilityBase",
      DefCategory = "ThingDef",
      FileName = "RangedSpecial.xml",
      DLC = "Core",
    },
    defName = "TornadoGenerator",
    label = "tornado generator",
    description = [[An ancient control unit for a network of weather-control satellites. This device has had certain failsafes bypassed; it is capable of causing a massive air current disturbance, which will generate a tornado at a chosen location. The weather network will detect this unauthorized intrusion and lock out the device after use, but the tornado will be left to spend its energy normally.]],
    statBases = {
      MarketValue = 800,
    },
    verbs = {
      {
        warmupTime = 3,
        spawnDef = "Tornado",
        colonyWideTaleDef = "TornadoFromItem",
        range = 44.9,
        burstShotCount = 1,
        onlyManualCast = true,
        targetParams = {
          canTargetLocations = true,
        },
      },
    },
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 1,
        destroyOnEmpty = true,
        hotKey = "Misc4",
        chargeNoun = "charge",
        displayGizmoWhileUndrafted = false,
      },
    },
  },

  ["ThingDef:PlantBaseNonEdible"] = {
    _ = {
      Name = "PlantBaseNonEdible",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Plants_Bases.xml",
      DLC = "Core",
    },
    category = "Plant",
    thingClass = "Plant",
    altitudeLayer = "LowPlant",
    useHitPoints = true,
    statBases = {
      Flammability = 1,
    },
    pathCostIgnoreRepeat = false,
    plant = {
      fertilityMin = 0.7,
      fertilitySensitivity = 1.0,
      sowWork = 170,
      harvestWork = 200,
    },
  },

  ["ThingDef:PlantBase"] = {
    _ = {
      ParentName = "PlantBaseNonEdible",
      Name = "PlantBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Plants_Bases.xml",
      DLC = "Core",
    },
    ingestible = {
      foodType = {
        "Plant",
      },
      preferability = "RawBad",
    },
  },

  ["ThingDef:BushBase"] = {
    _ = {
      ParentName = "PlantBase",
      Name = "BushBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Plants_Bases.xml",
      DLC = "Core",
    },
    statBases = {
      MaxHitPoints = 120,
      Nutrition = 0.3,
    },
    fillPercent = 0.20,
    pathCost = 30,
    plant = {
      fertilitySensitivity = 0.5,
      growDays = 3,
    },
  },

  ["ThingDef:TreeBase"] = {
    _ = {
      ParentName = "PlantBase",
      Name = "TreeBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Plants_Bases.xml",
      DLC = "Core",
    },
    statBases = {
      MaxHitPoints = 200,
      Flammability = 0.8,
      Nutrition = 1.7,
    },
    altitudeLayer = "Building",
    fillPercent = 0.25,
    passability = "PassThroughOnly",
    pathCost = 42,
    ingestible = {
      foodType = {
        "Tree",
      },
      preferability = "RawBad",
    },
    plant = {
      lifespanDaysPerGrowDays = 9,
      fertilitySensitivity = 0.5,
      sowWork = 4000,
      sowMinSkill = 6,
      sowResearchPrerequisites = {
        "TreeSowing",
      },
      harvestWork = 800,
      harvestedThingDef = "WoodLog",
      harvestYield = 25,
      harvestTag = "Wood",
      harvestMinGrowth = 0.40,
      harvestFailable = false,
      blockAdjacentSow = true,
      sowTags = {
        "Ground",
      },
      interferesWithRoof = true,
    },
  },

  ["ThingDef:CavePlantBase"] = {
    _ = {
      Name = "CavePlantBase",
      ParentName = "PlantBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Plants_Cave.xml",
      DLC = "Core",
    },
    plant = {
      growMinGlow = 0,
      growOptimalGlow = 0,
      cavePlant = true,
    },
  },

  ["ThingDef:Glowstool"] = {
    _ = {
      ParentName = "CavePlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cave.xml",
      DLC = "Core",
    },
    defName = "Glowstool",
    label = "glowstool",
    description = [[A small brown mushroom typically found in caves. It smells like an old, dirty rag pulled from the stomach of a rotting muffalo - but it tastes surprisingly good when cooked. Dies when exposed to light.]],
    statBases = {
      MaxHitPoints = 100,
      Beauty = 2,
      Nutrition = 0.35,
    },
    pathCost = 14,
    plant = {
      fertilityMin = 0.01,
      fertilitySensitivity = 0.15,
      growDays = 40,
      harvestYield = 20,
      harvestTag = "Standard",
      harvestedThingDef = "RawFungus",
    },
    comps = {
      CompProperties_Glower = {
        glowRadius = 10,
        glowColor = {5, 25, 32, 0},
      },
    },
  },

  ["ThingDef:Agarilux"] = {
    _ = {
      ParentName = "CavePlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cave.xml",
      DLC = "Core",
    },
    defName = "Agarilux",
    label = "agarilux",
    description = [[An enormous purple mushroom. Its size and glowing protrusions make this fungus beautiful to look at. It dies when exposed to light.]],
    statBases = {
      MaxHitPoints = 150,
      Beauty = 4,
      Nutrition = 0.5,
    },
    pathCost = 30,
    plant = {
      fertilityMin = 0.01,
      fertilitySensitivity = 0.15,
      growDays = 60,
      harvestYield = 35,
      harvestTag = "Standard",
      harvestedThingDef = "RawFungus",
    },
    comps = {
      CompProperties_Glower = {
        glowRadius = 10,
        glowColor = {23, 15, 30, 0},
      },
    },
  },

  ["ThingDef:Bryolux"] = {
    _ = {
      ParentName = "CavePlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cave.xml",
      DLC = "Core",
    },
    defName = "Bryolux",
    label = "bryolux",
    description = [[A blue moss typically found in deep, dark caves. It is sticky, with tangled fibers, which slows anyone walking over it. Dies when exposed to light.]],
    statBases = {
      MaxHitPoints = 100,
      Beauty = 1,
      Nutrition = 0.15,
    },
    pathCost = 30,
    plant = {
      fertilityMin = 0.01,
      fertilitySensitivity = 0.15,
      growDays = 60,
    },
    comps = {
      CompProperties_Glower = {
        glowRadius = 10,
        glowColor = {5, 5, 25, 0},
      },
    },
  },

  ["ThingDef:Plant_Rose"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Decorative.xml",
      DLC = "Core",
    },
    defName = "Plant_Rose",
    label = "rose",
    description = [[A beautiful cultivated flower, the rose has been a symbol of love since Earth's ancient era.]],
    statBases = {
      MaxHitPoints = 85,
      Beauty = 14,
      Nutrition = 0.05,
    },
    altitudeLayer = "Item",
    ingestible = {
      canAutoSelectAsFoodForCaravan = false,
    },
    plant = {
      harvestTag = "Standard",
      sowWork = 750,
      sowTags = {
        "Ground",
        "Decorative",
      },
      growMinGlow = 0.3,
      growDays = 1.5,
      lifespanDaysPerGrowDays = 5,
    },
  },

  ["ThingDef:Plant_Daylily"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Decorative.xml",
      DLC = "Core",
    },
    defName = "Plant_Daylily",
    label = "daylily",
    description = [[A cultivated flower with wide petals and a short lifespan. Daylilies are very beautiful, but must be replanted often.]],
    statBases = {
      MaxHitPoints = 85,
      Beauty = 18,
      Nutrition = 0.05,
    },
    altitudeLayer = "Item",
    ingestible = {
      canAutoSelectAsFoodForCaravan = false,
    },
    plant = {
      harvestTag = "Standard",
      sowWork = 540,
      sowTags = {
        "Ground",
        "Decorative",
      },
      growMinGlow = 0.3,
      growDays = 1.5,
      lifespanDaysPerGrowDays = 3,
    },
  },

  ["ThingDef:Plant_Rice"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_Rice",
    label = "rice plant",
    description = [[A short, fast-growing crop that yields small edible grains. Its great nutritional ouput and ease of cultivation has made it the economic core of many great civilizations. While rice grows quickly, it is sensitive to soil fertility and will not fare well in poor soil.]],
    statBases = {
      MaxHitPoints = 85,
      Nutrition = 0.18,
    },
    pathCost = 14,
    plant = {
      harvestTag = "Standard",
      harvestedThingDef = "RawRice",
      harvestYield = 6,
      sowTags = {
        "Ground",
        "Hydroponic",
      },
      growDays = 3,
    },
  },

  ["ThingDef:Plant_Potato"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_Potato",
    label = "potato plant",
    description = [[A highly nutritious tuber. Potatoes grow well even in somewhat poor soil, and form a delicious crispy outer coating when fried in oil.]],
    statBases = {
      MaxHitPoints = 85,
      Nutrition = 0.2,
    },
    pathCost = 14,
    plant = {
      fertilitySensitivity = 0.4,
      harvestTag = "Standard",
      harvestedThingDef = "RawPotatoes",
      harvestYield = 11,
      sowTags = {
        "Ground",
        "Hydroponic",
      },
      growDays = 5.8,
    },
  },

  ["ThingDef:Plant_Corn"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_Corn",
    label = "corn plant",
    description = [[A tall grain plant which produces ears of soft, edible seeds. While corn takes a long time to grow, it yields lots of food compared to other crops. Harvested corn takes a long time to spoil.]],
    statBases = {
      MaxHitPoints = 150,
      Nutrition = 0.3,
    },
    pathCost = 14,
    plant = {
      fertilityMin = 0.70,
      harvestTag = "Standard",
      harvestedThingDef = "RawCorn",
      harvestYield = 22,
      sowTags = {
        "Ground",
      },
      growDays = 11.3,
    },
  },

  ["ThingDef:Plant_Strawberry"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_Strawberry",
    label = "strawberry plant",
    description = [[A low bush-like plant that yields fragile but delicious strawberries. While it isn't quite as productive calorie-for-calorie as other crops, strawberries are delicious even when raw.]],
    statBases = {
      MaxHitPoints = 85,
      Nutrition = 0.2,
    },
    pathCost = 14,
    plant = {
      growDays = 4.6,
      harvestTag = "Standard",
      harvestedThingDef = "RawBerries",
      harvestYield = 8,
      sowMinSkill = 5,
      sowTags = {
        "Ground",
        "Hydroponic",
      },
    },
  },

  ["ThingDef:Plant_Haygrass"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_Haygrass",
    label = "haygrass",
    description = [[A mixture of nutrient-rich grasses which yield large amounts of hay. Hay is edible for animals, but not humans.]],
    statBases = {
      MaxHitPoints = 85,
      Flammability = 1.3,
      Nutrition = 0.2,
    },
    pathCost = 14,
    plant = {
      fertilitySensitivity = 0.6,
      growDays = 7,
      harvestTag = "Standard",
      harvestedThingDef = "Hay",
      harvestYield = 18,
      sowTags = {
        "Ground",
      },
    },
  },

  ["ThingDef:Plant_Cotton"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_Cotton",
    label = "cotton plant",
    description = [[A mid-size crop that yields fine white cotton fibers. These are used to make cloth.]],
    statBases = {
      MaxHitPoints = 85,
      Nutrition = 0.2,
    },
    pathCost = 14,
    plant = {
      growDays = 8,
      harvestTag = "Standard",
      harvestedThingDef = "Cloth",
      harvestYield = 10,
      sowTags = {
        "Ground",
        "Hydroponic",
      },
    },
  },

  ["ThingDef:Plant_Devilstrand"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_Devilstrand",
    label = "devilstrand",
    description = [[This fragile mushroom was genetically engineered to produce a silk net that is both difficult to tear and soft to the touch. While the mushroom takes a very long time to grow, only exotic ultra-tech fabrics outperform its devilstrand fibers.\n\nSome say it's called devilstrand because of its red color. Others think it owes its name to the greed it inspires in people.]],
    statBases = {
      MaxHitPoints = 85,
      Nutrition = 0.15,
    },
    pathCost = 14,
    plant = {
      growDays = 22.5,
      sowWork = 400,
      harvestTag = "Standard",
      harvestedThingDef = "DevilstrandCloth",
      harvestYield = 6,
      sowTags = {
        "Ground",
      },
      sowMinSkill = 10,
      sowResearchPrerequisites = {
        "Devilstrand",
      },
    },
  },

  ["ThingDef:HealrootBase"] = {
    _ = {
      ParentName = "PlantBase",
      Name = "HealrootBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    statBases = {
      MaxHitPoints = 60,
      Nutrition = 0.15,
    },
    pathCost = 14,
    plant = {
      growDays = 10,
      harvestWork = 400,
      harvestTag = "Standard",
      harvestedThingDef = "MedicineHerbal",
      harvestYield = 1,
    },
  },

  ["ThingDef:Plant_Healroot"] = {
    _ = {
      ParentName = "HealrootBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_Healroot",
    label = "healroot",
    description = [[A slow-growing plant which yields herbal medicine when harvested. Sowing and harvesting healroot are both very labor-intensive tasks because of its delicate shoots.\n\nHealroot was selectively bred for centuries by settlers. It is sometimes also called "healer's hand" by tribespeople - a nickname it owes to its five major medicinal virtues.]],
    plant = {
      growDays = 7,
      sowWork = 800,
      sowMinSkill = 8,
      sowTags = {
        "Ground",
        "Hydroponic",
      },
    },
  },

  ["ThingDef:Plant_Hops"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_Hops",
    label = "hop plant",
    description = [[A flowering crop that yields hops, an essential ingredient in beer.]],
    statBases = {
      MaxHitPoints = 85,
      Nutrition = 0.2,
    },
    pathCost = 14,
    plant = {
      fertilitySensitivity = 0.7,
      growDays = 5,
      harvestTag = "Standard",
      harvestedThingDef = "RawHops",
      harvestYield = 8,
      sowMinSkill = 3,
      sowTags = {
        "Ground",
        "Hydroponic",
      },
    },
  },

  ["ThingDef:Plant_Smokeleaf"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_Smokeleaf",
    label = "smokeleaf plant",
    description = [[A leafy crop grown for the psychological effects of chemicals in its leaves. Smokeleaf leaves can be prepared into joints at the crafting spot. Smokeleaf makes a user feel relaxed, but reduces motivation, and can be addictive.]],
    statBases = {
      MaxHitPoints = 85,
      Nutrition = 0.15,
    },
    pathCost = 14,
    plant = {
      growDays = 7.50,
      harvestTag = "Standard",
      harvestedThingDef = "SmokeleafLeaves",
      harvestYield = 9,
      sowMinSkill = 4,
      sowTags = {
        "Ground",
        "Hydroponic",
      },
    },
  },

  ["ThingDef:Plant_Psychoid"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_Psychoid",
    label = "psychoid plant",
    description = [[A leafy plant which generates the chemical compound psychite. Originally evolved as a defense mechanism to ward off plant-eating animals by overstimulating and sickening them, the psychite drug can be extracted and refined into various forms for recreational use. It is addictive.]],
    statBases = {
      MaxHitPoints = 85,
      Nutrition = 0.15,
    },
    pathCost = 14,
    plant = {
      growDays = 9.00,
      harvestTag = "Standard",
      harvestedThingDef = "PsychoidLeaves",
      harvestYield = 8,
      sowMinSkill = 6,
      sowTags = {
        "Ground",
        "Hydroponic",
      },
    },
  },

  ["ThingDef:Plant_TreeCocoa"] = {
    _ = {
      ParentName = "TreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Cultivated_Farm.xml",
      DLC = "Core",
    },
    defName = "Plant_TreeCocoa",
    label = "cocoa tree",
    description = [[A tropical tree that produces chocolate, genetically engineered to sweeten its own product, and survive in slightly less-warm climates.]],
    statBases = {
      Beauty = 2,
      Nutrition = 1.25,
    },
    plant = {
      growDays = 16,
      sowMinSkill = 8,
      sowTags = {
        "Ground",
      },
      sowResearchPrerequisites = {
        _ = {
          Inherit = false,
        },
        "Cocoa",
      },
      harvestWork = 400,
      harvestTag = "Standard",
      harvestYield = 20,
      harvestedThingDef = "Chocolate",
      harvestFailable = true,
    },
  },

  ["ThingDef:BurnedTree"] = {
    _ = {
      DefCategory = "ThingDef",
      FileName = "Plants_Special.xml",
      DLC = "Core",
    },
    defName = "BurnedTree",
    label = "burned tree",
    description = [[A burned tree stump. It's ugly and yields no usable wood.]],
    category = "Plant",
    thingClass = "DeadPlant",
    altitudeLayer = "Building",
    useHitPoints = true,
    statBases = {
      MaxHitPoints = 100,
      Flammability = 0,
      DeteriorationRate = 4,
      Beauty = -8,
    },
    fillPercent = 0.20,
    pathCostIgnoreRepeat = false,
    passability = "PassThroughOnly",
    pathCost = 14,
    plant = {
      harvestWork = 180,
      harvestYield = 0,
      fertilityMin = 0.01,
      fertilitySensitivity = 0,
      blockAdjacentSow = true,
      harvestedThingDef = "WoodLog",
      harvestFailable = false,
      harvestTag = "Wood",
      growDays = 30,
      growMinGlow = 0,
      lifespanDaysPerGrowDays = 0,
    },
  },

  ["ThingDef:Plant_Ambrosia"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Special.xml",
      DLC = "Core",
    },
    defName = "Plant_Ambrosia",
    label = "ambrosia bush",
    description = [[A rare wild bush which yields the ambrosia fruit. Ambrosia fruit is delicious and produces a drug-like mood boost. Ambrosia cannot be farmed, which makes wild ambrosia groves very valuable.\n\nIts rarity, beauty, and desirability are why ambrosia was named after the food of the ancient Greek gods.]],
    statBases = {
      MaxHitPoints = 100,
      Nutrition = 0.35,
    },
    pathCost = 14,
    plant = {
      fertilitySensitivity = 0.15,
      growDays = 6,
      harvestYield = 4,
      harvestTag = "Standard",
      harvestedThingDef = "Ambrosia",
    },
  },

  ["ThingDef:Plant_Agave"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Arid.xml",
      DLC = "Core",
    },
    defName = "Plant_Agave",
    label = "agave",
    description = [[A large-leafed desert plant with edible flowers and stalks.]],
    statBases = {
      MaxHitPoints = 120,
      Nutrition = 0.2,
    },
    fillPercent = 0.20,
    pathCost = 30,
    plant = {
      fertilitySensitivity = 0.5,
      growDays = 6,
      harvestTag = "Standard",
      harvestedThingDef = "RawAgave",
      harvestYield = 10,
      harvestWork = 300,
    },
  },

  ["ThingDef:Plant_PincushionCactus"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Arid.xml",
      DLC = "Core",
    },
    defName = "Plant_PincushionCactus",
    label = "pincushion cactus",
    description = [[A short cactus. It is so named because it resembles a pincushion.]],
    statBases = {
      MaxHitPoints = 150,
      Nutrition = 0.25,
    },
    pathCost = 30,
    plant = {
      fertilityMin = 0.05,
      fertilitySensitivity = 0,
      growDays = 2.5,
    },
  },

  ["ThingDef:Plant_SaguaroCactus"] = {
    _ = {
      ParentName = "TreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Arid.xml",
      DLC = "Core",
    },
    defName = "Plant_SaguaroCactus",
    label = "saguaro cactus",
    description = [[A large cactus native to arid Earth environments. Though it is not a tree, it yields a small amount of fibrous material that can be used like wood.]],
    statBases = {
      MaxHitPoints = 130,
      Nutrition = 1.5,
    },
    fillPercent = 0.35,
    plant = {
      lifespanDaysPerGrowDays = 40,
      fertilityMin = 0.05,
      fertilitySensitivity = 0,
      growDays = 5,
      harvestWork = 300,
      harvestYield = 15,
      harvestMinGrowth = 0.2,
    },
  },

  ["ThingDef:Plant_TreeDrago"] = {
    _ = {
      ParentName = "TreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Arid.xml",
      DLC = "Core",
    },
    defName = "Plant_TreeDrago",
    label = "drago tree",
    description = [[A hardy desert tree topped with thick, pointed leaves.]],
    statBases = {
      Beauty = 1,
      Nutrition = 1,
    },
    plant = {
      growDays = 15,
      harvestWork = 750,
      harvestYield = 25,
    },
  },

  ["ThingDef:Plant_Grass"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_General.xml",
      DLC = "Core",
    },
    defName = "Plant_Grass",
    label = "grass",
    description = [[Wild grass. Grows anywhere there is a little light and minimally fertile ground.]],
    statBases = {
      MaxHitPoints = 85,
      Flammability = 1.3,
      Nutrition = 0.25,
    },
    plant = {
      fertilityMin = 0.05,
      fertilitySensitivity = 0.3,
      growDays = 2.5,
      harvestWork = 40,
    },
  },

  ["ThingDef:Plant_TallGrass"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_General.xml",
      DLC = "Core",
    },
    defName = "Plant_TallGrass",
    label = "tall grass",
    description = [[Wild tall grass. Slows down anyone moving over it.]],
    statBases = {
      MaxHitPoints = 90,
      Flammability = 1.3,
      Nutrition = 0.30,
    },
    pathCost = 14,
    plant = {
      fertilitySensitivity = 0.7,
      growDays = 3,
      harvestWork = 60,
    },
  },

  ["ThingDef:Plant_Bush"] = {
    _ = {
      ParentName = "BushBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_General.xml",
      DLC = "Core",
    },
    defName = "Plant_Bush",
    label = "bush",
    description = [[A short shrub. Does not typically talk.]],
    plant = {
      growDays = 3,
    },
  },

  ["ThingDef:Plant_Brambles"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_General.xml",
      DLC = "Core",
    },
    defName = "Plant_Brambles",
    label = "brambles",
    description = [[Tangled, thorny, woody shoots covered with leaves. Brambles grow in clusters, and slow down anyone moving over them.]],
    statBases = {
      MaxHitPoints = 100,
      Nutrition = 0.2,
    },
    pathCost = 14,
    plant = {
      fertilitySensitivity = 0.7,
      growDays = 3,
      harvestWork = 60,
    },
  },

  ["ThingDef:Plant_HealrootWild"] = {
    _ = {
      ParentName = "HealrootBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_General.xml",
      DLC = "Core",
    },
    defName = "Plant_HealrootWild",
    label = "wild healroot",
    description = [[A slow-growing plant which yields herbal medicine when harvested.\n\nThis wild breed of healroot is hardier than domesticated healroot, but too difficult to cultivate. It is prized by tribespeople in colder climates.]],
  },

  ["ThingDef:Plant_TreeWillow"] = {
    _ = {
      ParentName = "DeciduousTreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Swamp.xml",
      DLC = "Core",
    },
    defName = "Plant_TreeWillow",
    label = "willow tree",
    description = [[One of the fastest growing shade trees, willows provide a beautiful, leafy canopy. It doesn't yield much usable wood.]],
    statBases = {
      Beauty = 2,
    },
    plant = {
      growDays = 13,
      harvestWork = 800,
      harvestYield = 27,
    },
  },

  ["ThingDef:Plant_TreeCypress"] = {
    _ = {
      ParentName = "DeciduousTreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Swamp.xml",
      DLC = "Core",
    },
    defName = "Plant_TreeCypress",
    label = "cypress tree",
    description = [[A tall coniferous tree often found in swamps. Despite its slow growth, planting these trees can be profitable as a low-effort, long-term investment because they yield so much usable wood.]],
    statBases = {
      Beauty = 1,
    },
    plant = {
      growDays = 35,
      harvestWork = 1800,
      harvestYield = 60,
    },
  },

  ["ThingDef:Plant_TreeMaple"] = {
    _ = {
      ParentName = "DeciduousTreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Swamp.xml",
      DLC = "Core",
    },
    defName = "Plant_TreeMaple",
    label = "maple tree",
    description = [[A common medium-sized tree, easily identifiable by its distinct three-pointed leaf.]],
    statBases = {
      Beauty = 2,
    },
    plant = {
      growDays = 27,
      harvestWork = 800,
      harvestYield = 27,
    },
  },

  ["ThingDef:Plant_Chokevine"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Swamp.xml",
      DLC = "Core",
    },
    defName = "Plant_Chokevine",
    label = "chokevine",
    description = [[Tangled masses of cord-like, spiky vines which coil in great masses along the ground. Chokevine greatky slows down anyone who moves over it. Multiple tribes have independently generated stories of chokevine strangling children to death in the night, as a way to scare kids into coming home before dark.]],
    statBases = {
      MaxHitPoints = 100,
      Nutrition = 0.25,
    },
    pathCost = 42,
    plant = {
      fertilitySensitivity = 0.7,
      growDays = 5,
      harvestWork = 150,
    },
  },

  ["ThingDef:Plant_Dandelion"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Temperate.xml",
      DLC = "Core",
    },
    defName = "Plant_Dandelion",
    label = "dandelions",
    description = [[A tiny yellow flower which grows in large clusters. Though it is often considered a weed, dandelions in bloom are quite beautiful.]],
    statBases = {
      MaxHitPoints = 85,
      Beauty = 4,
      Nutrition = 0.18,
    },
    plant = {
      fertilitySensitivity = 0.0,
      growDays = 2.5,
      sowTags = {
        "Ground",
      },
      fertilityMin = 0.05,
    },
  },

  ["ThingDef:Plant_Astragalus"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Temperate.xml",
      DLC = "Core",
    },
    defName = "Plant_Astragalus",
    label = "astragalus",
    description = [[A small perennial wildflower that grows in alpine climates.]],
    statBases = {
      MaxHitPoints = 85,
      Beauty = 4,
      Nutrition = 0.18,
    },
    plant = {
      fertilityMin = 0.05,
      fertilitySensitivity = 0,
      growDays = 2.5,
    },
  },

  ["ThingDef:Plant_Moss"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Temperate.xml",
      DLC = "Core",
    },
    defName = "Plant_Moss",
    label = "moss",
    description = [[Wild moss that grows in clumps in areas of low light and cool temperatures. Moss takes a long time to grow, but is very frost-resistant.]],
    statBases = {
      MaxHitPoints = 120,
      Flammability = 0.6,
      Nutrition = 0.15,
    },
    plant = {
      fertilityMin = 0.05,
      fertilitySensitivity = 0,
      growDays = 15,
      harvestWork = 60,
    },
  },

  ["ThingDef:Plant_Berry"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Temperate.xml",
      DLC = "Core",
    },
    defName = "Plant_Berry",
    label = "berry bush",
    description = [[A bushy wild plant which yields delicious berries. Berries can be cooked, but they're also good to eat even when raw.]],
    statBases = {
      MaxHitPoints = 120,
      Nutrition = 0.35,
    },
    fillPercent = 0.20,
    pathCost = 30,
    plant = {
      fertilityMin = 0.5,
      fertilitySensitivity = 0.5,
      growDays = 6,
      harvestYield = 10,
      harvestWork = 250,
      harvestTag = "Standard",
      harvestedThingDef = "RawBerries",
    },
  },

  ["ThingDef:Plant_TreeOak"] = {
    _ = {
      ParentName = "DeciduousTreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Temperate.xml",
      DLC = "Core",
    },
    defName = "Plant_TreeOak",
    label = "oak tree",
    description = [[A hardwood tree. Oaks take a long time to grow, but their wood is so strong that 'oak' is used as a metaphor for strength across many cultures.]],
    statBases = {
      Beauty = 2,
    },
    plant = {
      growDays = 30,
      harvestWork = 1400,
      harvestYield = 46,
    },
  },

  ["ThingDef:Plant_TreePoplar"] = {
    _ = {
      ParentName = "DeciduousTreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Temperate.xml",
      DLC = "Core",
    },
    defName = "Plant_TreePoplar",
    label = "poplar tree",
    description = [[A softwood tree that grows very fast. Unfortunately, its wood is weak and so it yields less useful material than hardwood trees.]],
    statBases = {
      Beauty = 1,
      Nutrition = 1,
    },
    plant = {
      growDays = 15.05,
      harvestWork = 800,
      harvestYield = 27,
    },
  },

  ["ThingDef:Plant_TreePine"] = {
    _ = {
      ParentName = "TreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Temperate.xml",
      DLC = "Core",
    },
    defName = "Plant_TreePine",
    label = "pine tree",
    description = [[A large conifer covered with prickly pine cones. It grows in a distinctive conical shape.]],
    statBases = {
      Beauty = 2,
      Nutrition = 1.25,
    },
    plant = {
      growDays = 20,
      harvestWork = 800,
      harvestYield = 27,
    },
  },

  ["ThingDef:Plant_TreeBirch"] = {
    _ = {
      ParentName = "DeciduousTreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Temperate.xml",
      DLC = "Core",
    },
    defName = "Plant_TreeBirch",
    label = "birch tree",
    description = [[A temperate-biome tree known for its thin, white, paper-like bark.]],
    statBases = {
      Beauty = 2,
      Nutrition = 1.25,
    },
    plant = {
      growDays = 20,
      harvestWork = 800,
      harvestYield = 27,
    },
  },

  ["ThingDef:Plant_ShrubLow"] = {
    _ = {
      ParentName = "PlantBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Tropical.xml",
      DLC = "Core",
    },
    defName = "Plant_ShrubLow",
    label = "low shrubs",
    description = [[Various low broadleaf shrubs. These grow in clusters and slow down movement.]],
    statBases = {
      MaxHitPoints = 90,
      Nutrition = 0.2,
    },
    pathCost = 14,
    plant = {
      fertilitySensitivity = 0.7,
      growDays = 3,
      harvestWork = 60,
    },
  },

  ["ThingDef:Plant_Alocasia"] = {
    _ = {
      ParentName = "BushBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Tropical.xml",
      DLC = "Core",
    },
    defName = "Plant_Alocasia",
    label = "alocasia",
    description = [[A tropical plant. Its extremely broad leaves are a commonly-recognized signifier of tropical forests.]],
  },

  ["ThingDef:Plant_Clivia"] = {
    _ = {
      ParentName = "BushBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Tropical.xml",
      DLC = "Core",
    },
    defName = "Plant_Clivia",
    label = "clivia",
    description = [[An unusual plant with tall, pretty flowers. Some call it the 'bush lily'.]],
    statBases = {
      Beauty = 2,
    },
  },

  ["ThingDef:Plant_Rafflesia"] = {
    _ = {
      ParentName = "BushBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Tropical.xml",
      DLC = "Core",
    },
    defName = "Plant_Rafflesia",
    label = "giant rafflesia",
    description = [[A rare, giant flower which can be found deep in steaming jungles. You would think a giant flower would be beautiful, but this one looks and smells like rotting flesh.]],
    statBases = {
      Beauty = -6,
    },
  },

  ["ThingDef:Plant_TreeTeak"] = {
    _ = {
      ParentName = "DeciduousTreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Tropical.xml",
      DLC = "Core",
    },
    defName = "Plant_TreeTeak",
    label = "teak tree",
    description = [[An exceptionally strong hardwood tree that grows in warm climates. Because teak wood is so durable and water-resistant, it was used to form the keel of wooden sailing ships in ancient times.]],
    statBases = {
      Beauty = 2,
    },
    plant = {
      growDays = 32.5,
      harvestWork = 1800,
      harvestYield = 60,
    },
  },

  ["ThingDef:Plant_TreeCecropia"] = {
    _ = {
      ParentName = "TreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Tropical.xml",
      DLC = "Core",
    },
    defName = "Plant_TreeCecropia",
    label = "cecropia tree",
    description = [[One of the most common rainforest trees. Cecropia grows very fast, but yields little usable wood.]],
    statBases = {
      Beauty = 1,
      Nutrition = 1.2,
    },
    plant = {
      growDays = 14,
      harvestWork = 600,
      harvestYield = 18,
    },
  },

  ["ThingDef:Plant_TreePalm"] = {
    _ = {
      ParentName = "TreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Tropical.xml",
      DLC = "Core",
    },
    defName = "Plant_TreePalm",
    label = "palm tree",
    description = [[A tropical tree with a tall, naked trunk topped by a cluster of very broad leaves. Unfortunately, this variety doesn't produce any edible coconuts.]],
    statBases = {
      Beauty = 1,
      Nutrition = 1.2,
    },
    plant = {
      growDays = 14,
      harvestWork = 600,
      harvestYield = 18,
    },
  },

  ["ThingDef:Plant_TreeBamboo"] = {
    _ = {
      ParentName = "TreeBase",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild_Tropical.xml",
      DLC = "Core",
    },
    defName = "Plant_TreeBamboo",
    label = "bamboo tree",
    description = [[A fast-growing tree-like plant that grows in dense groves. Bamboo can be harvested for a wood-like material. The plant itself is not beautiful.]],
    statBases = {
      Nutrition = 1.2,
    },
    plant = {
      growDays = 12,
      harvestWork = 550,
      harvestYield = 10,
    },
  },

  ["ThingDef:Muffalo"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Arid.xml",
      DLC = "Core",
    },
    defName = "Muffalo",
    label = "muffalo",
    description = [[A large herding herbivore descended from buffalo and adapted for both cold and warm environments. While enraged muffalo are deadly, tamed muffalo are quite docile and can be used as pack animals.\n\nNobody is quite sure why they're blue - it might even be some early genetic modification test that just never got changed.]],
    statBases = {
      MoveSpeed = 4.5,
      MarketValue = 300,
      ComfyTemperatureMin = -55,
      ComfyTemperatureMax = 45,
    },
    tools = {
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 13,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "HeadAttackTool",
      },
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.5,
      },
    },
    comps = {
      CompProperties_Shearable = {
        woolDef = "WoolMuffalo",
        shearIntervalDays = 25,
        woolAmount = 100,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 2.1,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Bluefur",
      gestationPeriodDays = 28,
      wildness = 0.6,
      trainability = "Simple",
      lifeExpectancy = 15,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.25,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Gazelle"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Arid.xml",
      DLC = "Core",
    },
    defName = "Gazelle",
    label = "gazelle",
    description = [[A small, extremely quick antelope known for its amazingly long leap.]],
    statBases = {
      MoveSpeed = 6.0,
      ComfyTemperatureMin = -10,
      MarketValue = 150,
    },
    tools = {
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 5.5,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 5.5,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 0.7,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      wildness = 0.75,
      gestationPeriodDays = 22,
      lifeExpectancy = 12,
      manhunterOnTameFailChance = 0,
      manhunterOnDamageChance = 0,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.20,
        },
        {
          def = "AnimalAdult",
          minAge = 0.4,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
    },
  },

  ["ThingDef:Iguana"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Arid.xml",
      DLC = "Core",
    },
    defName = "Iguana",
    label = "iguana",
    description = [[These large lizards normally feed on plant matter. However, when angered, their tough hide and sharp claws make them quite dangerous.\n\nResting iguanas hold their heads high, giving them an amusing 'proud' look. But they're not proud; they're just trying to see predators so they don't get eaten.]],
    statBases = {
      MoveSpeed = 3.0,
      MarketValue = 100,
      ComfyTemperatureMin = 0,
      ComfyTemperatureMax = 60,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftClaws",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightClaws",
      },
      {
        capacities = {
          "Bite",
        },
        power = 10,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    comps = {
      CompProperties_EggLayer = {
        eggFertilizedDef = "EggIguanaFertilized",
        eggFertilizationCountMax = 1,
        eggLayIntervalDays = 15,
        eggProgressUnfertilizedMax = 0.5,
        eggCountRange = { ["<"]=1, [">"]=2 },
      },
    },
    race = {
      baseBodySize = 0.20,
      foodType = {
        "OmnivoreRoughAnimal",
      },
      leatherDef = "Leather_Lizard",
      wildness = 0.5,
      trainability = "None",
      petness = 0.15,
      lifeExpectancy = 12,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.09,
        },
        {
          def = "AnimalAdult",
          minAge = 0.25,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
    },
  },

  ["ThingDef:Dromedary"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Arid.xml",
      DLC = "Core",
    },
    defName = "Dromedary",
    label = "dromedary",
    description = [[A large land mammal adapted to arid environments. Domesticated since ancient times, its wool and leather are both exceptionally good at insulating against the desert heat, and its milk is quite nourishing. It can be used as a pack animal, but its bouncing gait makes it too uncomfortable to ride for any distance.\n\nBy storing water in its large humps and reclaiming moisture from its breath as it exhales, it can go weeks without drinking.]],
    statBases = {
      MoveSpeed = 4.3,
      MarketValue = 300,
      ComfyTemperatureMin = -22,
      ComfyTemperatureMax = 60,
    },
    comps = {
      CompProperties_Milkable = {
        milkDef = "Milk",
        milkIntervalDays = 2,
        milkAmount = 12,
      },
    },
    tools = {
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 2.0,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Camel",
      wildness = 0.25,
      trainability = "Simple",
      gestationPeriodDays = 28,
      lifeExpectancy = 45,
      manhunterOnTameFailChance = 0,
      manhunterOnDamageChance = 0,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.25,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:BasePawn"] = {
    _ = {
      Name = "BasePawn",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Base.xml",
      DLC = "Core",
    },
    thingClass = "Pawn",
    category = "Pawn",
    altitudeLayer = "Pawn",
    useHitPoints = false,
    statBases = {
      Mass = 60,
      Flammability = 0.7,
    },
    comps = {
      {
        compClass = "CompAttachBase",
      },
    },
  },

  ["ThingDef:AnimalThingBase"] = {
    _ = {
      ParentName = "BasePawn",
      Name = "AnimalThingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Base.xml",
      DLC = "Core",
    },
    statBases = {
      LeatherAmount = 30,
    },
    race = {
      manhunterOnDamageChance = 0.02,
      manhunterOnTameFailChance = 0.013,
      trainability = "Intermediate",
    },
  },

  ["ThingDef:BaseBear"] = {
    _ = {
      Abstract = true,
      ParentName = "AnimalThingBase",
      Name = "BaseBear",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Bears.xml",
      DLC = "Core",
    },
    statBases = {
      MoveSpeed = 4.6,
      ComfyTemperatureMin = -40,
      MarketValue = 700,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 17,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 17,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 23.6,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.5,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 11,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      herdAnimal = false,
      baseBodySize = 2.15,
      foodType = {
        "OmnivoreAnimal",
        "OvivoreAnimal",
      },
      leatherDef = "Leather_Bear",
      gestationPeriodDays = 30,
      wildness = 0.80,
      lifeExpectancy = 22,
      trainability = "Advanced",
      manhunterOnTameFailChance = 0.10,
      manhunterOnDamageChance = 0.10,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.4,
        },
        {
          def = "AnimalAdult",
          minAge = 0.8,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
      "AnimalFighter",
    },
  },

  ["ThingDef:Bear_Grizzly"] = {
    _ = {
      ParentName = "BaseBear",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Bears.xml",
      DLC = "Core",
    },
    defName = "Bear_Grizzly",
    label = "grizzly bear",
    description = [[A huge omnivorous mammal adapted for cold climates. Bears' thick blubber and fur keeps them warm in winter.\n\nWhile their usual diet consists of fish, berries, honey, and scavenged meat, the grizzly is capable of using its massive strength and deadly claws to kill live prey. They are startlingly quick for such lumbering creatures.]],
    race = {
      wildness = 0.80,
    },
  },

  ["ThingDef:Bear_Polar"] = {
    _ = {
      ParentName = "BaseBear",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Bears.xml",
      DLC = "Core",
    },
    defName = "Bear_Polar",
    label = "polar bear",
    description = [[A great white bear adapted for frozen climates. Their thick blubber and fur keep them warm in winter.\n\nWhile their usual diet consists of fish and scavenged meat, the polar bear can also use its massive strength and deadly claws to kill live prey. They are startlingly quick for such lumbering creatures.]],
    statBases = {
      ComfyTemperatureMin = -55,
    },
    race = {
      wildness = 0.85,
    },
  },

  ["ThingDef:BigCatThingBase"] = {
    _ = {
      ParentName = "AnimalThingBase",
      Name = "BigCatThingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Races_Animal_BigCats.xml",
      DLC = "Core",
    },
    statBases = {
      MoveSpeed = 5.0,
      MarketValue = 400,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 11,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 11,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 16,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      herdAnimal = false,
      baseBodySize = 1.4,
      foodType = {
        "CarnivoreAnimal",
        "OvivoreAnimal",
      },
      leatherDef = "Leather_Panthera",
      wildness = 0.80,
      trainability = "Advanced",
      manhunterOnTameFailChance = 0.10,
      manhunterOnDamageChance = 0.10,
      gestationPeriodDays = 26,
      lifeExpectancy = 13,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.25,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
      "AnimalFighter",
    },
  },

  ["ThingDef:Cougar"] = {
    _ = {
      ParentName = "BigCatThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_BigCats.xml",
      DLC = "Core",
    },
    defName = "Cougar",
    label = "cougar",
    description = [[One of the most dangerous big cats, cougars are solitary hunters with long, sharp teeth and claws. They stalk prey from hidden positions before pouncing.\n\nWhile humans are not their normal diet, they won't turn down a meal of vulnerable human meat.]],
    statBases = {
      ComfyTemperatureMin = -25,
    },
  },

  ["ThingDef:Panther"] = {
    _ = {
      ParentName = "BigCatThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_BigCats.xml",
      DLC = "Core",
    },
    defName = "Panther",
    label = "panther",
    description = [[An agile and powerful big cat native to the jungles of old Earth. As solitary ambush predators, panthers are masters of taking down both large and small prey. Onlookers tend to focus on their graceful movements, while those in closer contact usually notice their skull-crushing strength.]],
    statBases = {
      ComfyTemperatureMin = -8,
      ComfyTemperatureMax = 50,
    },
  },

  ["ThingDef:Lynx"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_BigCats.xml",
      DLC = "Core",
    },
    defName = "Lynx",
    label = "lynx",
    description = [[A wildcat larger than a housecat, but smaller than a cougar. Lynxes survive on a diet of small birds and animals. Their very warm fur keeps them safe from the brutally cold temperatures of their frozen territories.]],
    statBases = {
      MoveSpeed = 5.0,
      ComfyTemperatureMin = -50,
      MarketValue = 250,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 9,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 9,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 12,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      herdAnimal = false,
      baseBodySize = 0.8,
      foodType = {
        "CarnivoreAnimal",
        "OvivoreAnimal",
      },
      leatherDef = "Leather_Panthera",
      wildness = 0.80,
      manhunterOnTameFailChance = 0.10,
      manhunterOnDamageChance = 0.10,
      gestationPeriodDays = 26,
      lifeExpectancy = 9,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.4,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
      "AnimalFighter",
    },
  },

  ["ThingDef:BigBirdThingBase"] = {
    _ = {
      ParentName = "AnimalThingBase",
      Name = "BigBirdThingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Birds.xml",
      DLC = "Core",
    },
    race = {
      leatherDef = "Leather_Bird",
      gestationPeriodDays = 24,
      lifeStageAges = {
        {
          def = "AnimalBabyTiny",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.22,
        },
        {
          def = "AnimalAdult",
          minAge = 0.45,
        },
      },
    },
  },

  ["ThingDef:Cassowary"] = {
    _ = {
      ParentName = "BigBirdThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Birds.xml",
      DLC = "Core",
    },
    defName = "Cassowary",
    label = "cassowary",
    description = [[A large flightless bird with brightly-colored feathers. While it looks beautiful, its kick is vicious. It's known for being quick to aggression when harmed by violence or confronted by incompetent animal tamers.]],
    statBases = {
      MoveSpeed = 4.6,
      MarketValue = 200,
      ComfyTemperatureMin = -8,
      ComfyTemperatureMax = 50,
    },
    race = {
      herdAnimal = false,
      baseBodySize = 0.8,
      foodType = {
        "VegetarianRoughAnimal",
      },
      wildness = 0.80,
      lifeExpectancy = 45,
      manhunterOnTameFailChance = 0.10,
      manhunterOnDamageChance = 0.10,
    },
    comps = {
      CompProperties_EggLayer = {
        eggFertilizedDef = "EggCassowaryFertilized",
        eggFertilizationCountMax = 1,
        eggLayIntervalDays = 17,
        eggProgressUnfertilizedMax = 0.5,
        eggCountRange = 1,
      },
    },
    tools = {
      {
        label = "claws",
        capacities = {
          "Scratch",
        },
        power = 7,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "Feet",
      },
      {
        label = "beak",
        capacities = {
          "Bite",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Beak",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    tradeTags = {
      "AnimalUncommon",
    },
  },

  ["ThingDef:Emu"] = {
    _ = {
      ParentName = "BigBirdThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Birds.xml",
      DLC = "Core",
    },
    defName = "Emu",
    label = "emu",
    description = [[A large flightless bird with beady eyes on its ugly face. With its bad attitude, it is the jerk of the natural world. Bother it, and it is guaranteed to seek revenge.]],
    statBases = {
      MoveSpeed = 5.5,
      MarketValue = 200,
      ComfyTemperatureMin = -8,
      ComfyTemperatureMax = 50,
    },
    race = {
      herdAnimal = false,
      baseBodySize = 0.8,
      foodType = {
        "VegetarianRoughAnimal",
      },
      wildness = 0.95,
      lifeExpectancy = 45,
      manhunterOnTameFailChance = 1.00,
      manhunterOnDamageChance = 1.00,
    },
    comps = {
      CompProperties_EggLayer = {
        eggFertilizedDef = "EggEmuFertilized",
        eggFertilizationCountMax = 1,
        eggLayIntervalDays = 17,
        eggProgressUnfertilizedMax = 0.5,
        eggCountRange = 1,
      },
    },
    tools = {
      {
        label = "claws",
        capacities = {
          "Scratch",
        },
        power = 8,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "Feet",
      },
      {
        label = "beak",
        capacities = {
          "Bite",
        },
        power = 9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Beak",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    tradeTags = {
      "AnimalUncommon",
    },
  },

  ["ThingDef:Ostrich"] = {
    _ = {
      ParentName = "BigBirdThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Birds.xml",
      DLC = "Core",
    },
    defName = "Ostrich",
    label = "ostrich",
    description = [[The largest unmodified bird species, ostriches are known for their fast run, huge eggs, and powerful kick. It is easily angered.]],
    statBases = {
      MoveSpeed = 6.0,
      MarketValue = 250,
      ComfyTemperatureMin = -8,
      ComfyTemperatureMax = 50,
    },
    race = {
      herdAnimal = false,
      baseBodySize = 1.0,
      foodType = {
        "VegetarianRoughAnimal",
      },
      wildness = 0.95,
      lifeExpectancy = 45,
      manhunterOnTameFailChance = 0.10,
      manhunterOnDamageChance = 0.10,
    },
    comps = {
      CompProperties_EggLayer = {
        eggFertilizedDef = "EggOstrichFertilized",
        eggFertilizationCountMax = 1,
        eggLayIntervalDays = 19,
        eggProgressUnfertilizedMax = 0.5,
        eggCountRange = 1,
      },
    },
    tools = {
      {
        label = "claws",
        capacities = {
          "Scratch",
        },
        power = 11,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "Feet",
      },
      {
        label = "beak",
        capacities = {
          "Bite",
        },
        power = 11,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Beak",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    tradeTags = {
      "AnimalUncommon",
    },
  },

  ["ThingDef:Turkey"] = {
    _ = {
      ParentName = "BigBirdThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Birds.xml",
      DLC = "Core",
    },
    defName = "Turkey",
    label = "turkey",
    description = [[A short, fat, flightless bird known for its hilarious 'gobbling' call. It has been long domesticated, but also lives in the wild.]],
    statBases = {
      MoveSpeed = 3.6,
      MarketValue = 100,
      ComfyTemperatureMin = -8,
    },
    race = {
      herdAnimal = false,
      baseBodySize = 0.6,
      foodType = {
        "VegetarianRoughAnimal",
      },
      wildness = 0.45,
      trainability = "None",
      lifeExpectancy = 9,
      manhunterOnTameFailChance = 0,
      manhunterOnDamageChance = 0,
    },
    comps = {
      CompProperties_EggLayer = {
        eggFertilizedDef = "EggTurkeyFertilized",
        eggFertilizationCountMax = 1,
        eggLayIntervalDays = 11,
        eggProgressUnfertilizedMax = 0.5,
        eggCountRange = { ["<"]=1, [">"]=1 },
      },
    },
    tools = {
      {
        label = "claws",
        capacities = {
          "Scratch",
        },
        power = 5,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "Feet",
      },
      {
        label = "beak",
        capacities = {
          "Bite",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Beak",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 4,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Chicken"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Chicken",
    label = "chicken",
    description = [[The most traditional farm bird, the chicken is raised for its eggs and meat. It grows very quickly and lays eggs very often.]],
    statBases = {
      MoveSpeed = 2.1,
      MarketValue = 50,
      LeatherAmount = 0,
      ComfyTemperatureMin = -10,
    },
    tools = {
      {
        label = "claws",
        capacities = {
          "Scratch",
        },
        power = 2,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "Feet",
      },
      {
        label = "beak",
        capacities = {
          "Bite",
        },
        power = 3,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Beak",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 1,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    comps = {
      CompProperties_EggLayer = {
        eggUnfertilizedDef = "EggChickenUnfertilized",
        eggFertilizedDef = "EggChickenFertilized",
        eggFertilizationCountMax = 1,
        eggLayIntervalDays = 2,
        eggCountRange = 1,
      },
    },
    race = {
      baseBodySize = 0.18,
      foodType = {
        "VegetarianRoughAnimal",
      },
      trainability = "None",
      wildness = 0,
      manhunterOnTameFailChance = 0,
      manhunterOnDamageChance = 0,
      mateMtbHours = 8,
      lifeExpectancy = 6,
      lifeStageAges = {
        {
          def = "AnimalBabyTiny",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.12,
        },
        {
          def = "AnimalAdult",
          minAge = 0.3,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Pig"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Pig",
    label = "pig",
    description = [[The pig was one of the first animals domesticated by humans. It is commonly raised for meat, and is easy to feed because of its omnivorous diet. Though pigs are self-serving by disposition, they can be trained in complex tasks.]],
    statBases = {
      MoveSpeed = 3.9,
      ComfyTemperatureMin = -5,
      MarketValue = 200,
    },
    tools = {
      {
        capacities = {
          "Bite",
        },
        power = 7.3,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 0.75,
      foodType = {
        "OmnivoreRoughAnimal",
      },
      leatherDef = "Leather_Pig",
      wildness = 0.07,
      trainability = "Advanced",
      manhunterOnTameFailChance = 0,
      manhunterOnDamageChance = 0,
      gestationPeriodDays = 17,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {1.7, 1},
          {2.0, 0},
        },
      },
      lifeExpectancy = 12,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.1,
        },
        {
          def = "AnimalAdult",
          minAge = 0.4,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Cow"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Cow",
    label = "cow",
    description = [[A large domesticated ungulate, cows have been bred for millennia to produce huge amounts of milk, meat, and leather. They are exceptionally gentle creatures and will never seek revenge, no matter how many times they are harmed. Most of them are so adapted to farm life that they cannot survive in the wild.]],
    statBases = {
      MoveSpeed = 3.2,
      ComfyTemperatureMin = -10,
      MarketValue = 300,
    },
    comps = {
      CompProperties_Milkable = {
        milkDef = "Milk",
        milkIntervalDays = 1,
        milkAmount = 18,
      },
    },
    tools = {
      {
        capacities = {
          "Bite",
        },
        power = 8.8,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 2.0,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      wildness = 0.05,
      trainability = "None",
      gestationPeriodDays = 20,
      lifeExpectancy = 22,
      manhunterOnDamageChance = 0,
      manhunterOnTameFailChance = 0,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.45,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Alpaca"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Alpaca",
    label = "alpaca",
    description = [[A medium-sized ungulate closely related to the llama, the alpaca is usually raised for its remarkably soft and insulating wool. Alpacas have also been used as pack animals since they hauled cargo on the rugged mountain trails of ancient South America]],
    statBases = {
      MoveSpeed = 4.1,
      ComfyTemperatureMin = -18,
      MarketValue = 350,
      ComfyTemperatureMax = 45,
    },
    tools = {
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 7.3,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 7.3,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    comps = {
      CompProperties_Shearable = {
        woolDef = "WoolAlpaca",
        shearIntervalDays = 15,
        woolAmount = 100,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 1.0,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Camel",
      wildness = 0.25,
      manhunterOnTameFailChance = 0,
      manhunterOnDamageChance = 0,
      gestationPeriodDays = 25,
      lifeExpectancy = 15,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.45,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Duck"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Duck",
    label = "duck",
    description = [[A very common type of farm bird, also appearing in the wild, the duck is raised for its delicious meat. It grows quick but lays eggs quite rarely.]],
    statBases = {
      MoveSpeed = 2.1,
      MarketValue = 60,
      LeatherAmount = 0,
      ComfyTemperatureMin = -10,
    },
    tools = {
      {
        label = "claws",
        capacities = {
          "Scratch",
        },
        power = 3,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "Feet",
      },
      {
        label = "beak",
        capacities = {
          "Bite",
        },
        power = 4,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Beak",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 2,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    comps = {
      CompProperties_EggLayer = {
        eggUnfertilizedDef = "EggDuckUnfertilized",
        eggFertilizedDef = "EggDuckFertilized",
        eggFertilizationCountMax = 1,
        eggLayIntervalDays = 3.5,
        eggCountRange = 1,
      },
    },
    race = {
      baseBodySize = 0.18,
      foodType = {
        "VegetarianRoughAnimal",
      },
      trainability = "None",
      wildness = 0,
      manhunterOnTameFailChance = 0,
      manhunterOnDamageChance = 0,
      mateMtbHours = 8,
      lifeExpectancy = 6,
      lifeStageAges = {
        {
          def = "AnimalBabyTiny",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.12,
        },
        {
          def = "AnimalAdult",
          minAge = 0.3,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Bison"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Bison",
    label = "bison",
    description = [[A large plant eating mammal appearing in the savannah wilderness. Tamed are quite docile, but enraged are fast and dangerous.]],
    statBases = {
      MoveSpeed = 4.7,
      MarketValue = 350,
      ComfyTemperatureMin = -55,
      ComfyTemperatureMax = 45,
    },
    tools = {
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 15,
        cooldownTime = 2.9,
        linkedBodyPartsGroup = "HeadAttackTool",
      },
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.5,
      },
    },
    comps = {
      CompProperties_Shearable = {
        woolDef = "WoolBison",
        shearIntervalDays = 25,
        woolAmount = 100,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 2.1,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      gestationPeriodDays = 28,
      wildness = 0.6,
      trainability = "Simple",
      manhunterOnDamageChance = 0.1,
      lifeExpectancy = 15,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.25,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Goat"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Goat",
    label = "goat",
    description = [[Naturally curious about the world, goats are among the friendliest domesticated creature bred by mankind.]],
    statBases = {
      MoveSpeed = 3.9,
      ComfyTemperatureMin = -20,
      MarketValue = 200,
    },
    comps = {
      CompProperties_Milkable = {
        milkDef = "Milk",
        milkIntervalDays = 2,
        milkAmount = 12,
      },
    },
    tools = {
      {
        capacities = {
          "Bite",
        },
        power = 7.3,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 0.75,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      wildness = 0.07,
      trainability = "None",
      manhunterOnTameFailChance = 0,
      manhunterOnDamageChance = 0,
      gestationPeriodDays = 17,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {1.7, 1},
          {2.0, 0},
        },
      },
      lifeExpectancy = 12,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.1,
        },
        {
          def = "AnimalAdult",
          minAge = 0.4,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Goose"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Goose",
    label = "goose",
    description = [[A domesticated bird kept by humans as poultry for it's eggs and meat. Lays eggs very often, however they take a long time to hatch.]],
    statBases = {
      MoveSpeed = 2.3,
      MarketValue = 90,
      LeatherAmount = 36,
      ComfyTemperatureMin = -10,
    },
    tools = {
      {
        label = "claws",
        capacities = {
          "Scratch",
        },
        power = 3,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "Feet",
      },
      {
        label = "beak",
        capacities = {
          "Bite",
        },
        power = 5.6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Beak",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 2,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    comps = {
      CompProperties_EggLayer = {
        eggUnfertilizedDef = "EggGooseUnfertilized",
        eggFertilizedDef = "EggGooseFertilized",
        eggFertilizationCountMax = 1,
        eggLayIntervalDays = 1.6,
        eggCountRange = 1,
      },
    },
    race = {
      baseBodySize = 0.40,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Bird",
      trainability = "None",
      wildness = 0.6,
      manhunterOnTameFailChance = 0.2,
      manhunterOnDamageChance = 0.25,
      mateMtbHours = 8,
      lifeExpectancy = 8,
      lifeStageAges = {
        {
          def = "AnimalBabyTiny",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.12,
        },
        {
          def = "AnimalAdult",
          minAge = 0.3,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Sheep"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Sheep",
    label = "sheep",
    description = [[Sheep husbandry is practised throughout the majority of the inhabited worlds, however only recently it has been introduced to the rimworlds. Domestic sheep are relatively small herbivores, usually with yellowish wool and medium sized horns.]],
    statBases = {
      MoveSpeed = 4.8,
      MarketValue = 210,
      ComfyTemperatureMin = -55,
      ComfyTemperatureMax = 45,
    },
    tools = {
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 14,
        cooldownTime = 2.9,
        linkedBodyPartsGroup = "HeadAttackTool",
      },
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.5,
      },
    },
    comps = {
      CompProperties_Shearable = {
        woolDef = "WoolSheep",
        shearIntervalDays = 10,
        woolAmount = 45,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 0.75,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      gestationPeriodDays = 17,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {1.7, 1},
          {2.0, 0},
        },
      },
      wildness = 0,
      trainability = "None",
      manhunterOnDamageChance = 0.0,
      lifeExpectancy = 12,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.25,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Horse"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Horse",
    label = "horse",
    description = [[A large hoofed mammal with a short coat, a long mane, and a long tail. Horses have been domesticated since ancient times.]],
    statBases = {
      MoveSpeed = 5.8,
      MarketValue = 550,
      ComfyTemperatureMin = -35,
      ComfyTemperatureMax = 45,
    },
    tools = {
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 10,
        cooldownTime = 2.9,
        linkedBodyPartsGroup = "HeadAttackTool",
      },
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.5,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 2.0,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      gestationPeriodDays = 28,
      wildness = 0.5,
      petness = 0.6,
      trainability = "Advanced",
      manhunterOnDamageChance = 0.1,
      lifeExpectancy = 30,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.25,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Yak"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Yak",
    label = "yak",
    description = [[Yaks are robust cattle with a bulky frame, short but thick legs, and rounded cloven hooves that are splayed to help them walk in snow.]],
    statBases = {
      MoveSpeed = 3.2,
      ComfyTemperatureMin = -45,
      MarketValue = 320,
    },
    comps = {
      CompProperties_Milkable = {
        milkDef = "Milk",
        milkIntervalDays = 2,
        milkAmount = 12,
      },
    },
    tools = {
      {
        capacities = {
          "Bite",
        },
        power = 8.8,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 1.9,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      wildness = 0.11,
      petness = 0.3,
      trainability = "None",
      gestationPeriodDays = 20,
      lifeExpectancy = 22,
      manhunterOnDamageChance = 0.05,
      manhunterOnTameFailChance = 0.02,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.45,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:GuineaPig"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "GuineaPig",
    label = "guinea pig",
    description = [[Neither a pig or a creature from Guinea, these little rodents are bred to be a household pet and a delicious dinner.]],
    statBases = {
      MoveSpeed = 5.0,
      MarketValue = 150,
      ComfyTemperatureMin = -15,
      ComfyTemperatureMax = 55,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 3.6,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 3.6,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 5.8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 2,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 0.28,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_GuineaPig",
      wildness = 0.60,
      trainability = "None",
      petness = 0.30,
      mateMtbHours = 8,
      nuzzleMtbHours = 24,
      gestationPeriodDays = 14,
      manhunterOnTameFailChance = 0.02,
      manhunterOnDamageChance = 0,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2.5, 1},
          {3, 0},
        },
      },
      lifeExpectancy = 4,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.15,
        },
        {
          def = "AnimalAdult",
          minAge = 0.30,
        },
      },
    },
    tradeTags = {
      "AnimalPet",
      "AnimalUncommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Donkey"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Farm.xml",
      DLC = "Core",
    },
    defName = "Donkey",
    label = "donkey",
    description = [[A small relative of the horse, domesticated in ancient times for farm work. Its goofy call is simultaneously annoying and endearing.]],
    statBases = {
      MoveSpeed = 5.3,
      MarketValue = 320,
      ComfyTemperatureMin = -25,
      ComfyTemperatureMax = 45,
    },
    tools = {
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 12,
        cooldownTime = 2.9,
        linkedBodyPartsGroup = "HeadAttackTool",
      },
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.5,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 1.5,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      gestationPeriodDays = 28,
      wildness = 0.03,
      petness = 0.60,
      trainability = "Advanced",
      manhunterOnDamageChance = 0.05,
      lifeExpectancy = 24,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.25,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Rhinoceros"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Giant.xml",
      DLC = "Core",
    },
    defName = "Rhinoceros",
    label = "rhinoceros",
    description = [[Despite being herbivorous, this large mammal is very easy to enrage. Once angered, its massive strength and sharp horn make it a brutal opponent. It has more muscle in one leg than most humans do in their whole body.]],
    statBases = {
      MoveSpeed = 5.0,
      MarketValue = 700,
      ComfyTemperatureMin = -8,
    },
    tools = {
      {
        label = "horn",
        capacities = {
          "Scratch",
        },
        power = 19,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HornAttackTool",
      },
      {
        label = "horn",
        capacities = {
          "Blunt",
        },
        power = 19,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HornAttackTool",
      },
      {
        capacities = {
          "Bite",
        },
        power = 19,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 15,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 3.0,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Rhinoceros",
      wildness = 0.90,
      manhunterOnTameFailChance = 0.10,
      manhunterOnDamageChance = 0.10,
      gestationPeriodDays = 43,
      lifeExpectancy = 45,
      herdAnimal = true,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.3,
        },
        {
          def = "AnimalAdult",
          minAge = 1.0,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
      "AnimalFighter",
    },
  },

  ["ThingDef:Elephant"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Giant.xml",
      DLC = "Core",
    },
    defName = "Elephant",
    label = "elephant",
    description = [[The largest unmodified land animal. Elephants has a long trunk they use to manipulate objects, and sharp tusks they use to gore attackers. A dead elephant's valuable tusks can be recovered by butchering it.\n\nIntelligent creatures with complex social relationships, elephants can be used as pack animals or trained to carry out the most complex of tasks. They live a long time, and are known to remember events and relationships from many decades before.]],
    statBases = {
      MoveSpeed = 4.8,
      MarketValue = 600,
      ComfyTemperatureMin = -12,
      ComfyTemperatureMax = 50,
    },
    tools = {
      {
        label = "tusk",
        capacities = {
          "Scratch",
          "Stab",
        },
        power = 25,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "TuskAttackTool",
      },
      {
        label = "left foot",
        capacities = {
          "Blunt",
        },
        power = 16.9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right foot",
        capacities = {
          "Blunt",
        },
        power = 16.9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 14,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 4.0,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Elephant",
      gestationPeriodDays = 48,
      wildness = 0.75,
      nuzzleMtbHours = 24,
      trainability = "Advanced",
      lifeExpectancy = 50,
      manhunterOnTameFailChance = 0.10,
      manhunterOnDamageChance = 0.10,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.8,
        },
        {
          def = "AnimalAdult",
          minAge = 2.0,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
    },
  },

  ["ThingDef:Megasloth"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Giant.xml",
      DLC = "Core",
    },
    defName = "Megasloth",
    label = "megasloth",
    description = [[A giant, solitary herbivore with two giant claws for warding off threats. Long extinct after being wiped out by the natives of Earth's American continent, the megasloth was later brought back using advanced cloning and artificial gestators. Its thick hide is exceptionally strong and insulating, and makes a great leather for cold-weather clothing. It is peaceful if left alone, but will shred anyone who disturbs it with its giant claws.]],
    statBases = {
      MoveSpeed = 4.8,
      MarketValue = 700,
      ComfyTemperatureMin = -55,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 21,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 21,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 22,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 15,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 4.0,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Heavy",
      gestationPeriodDays = 55,
      wildness = 0.97,
      trainability = "Advanced",
      nuzzleMtbHours = 60,
      lifeExpectancy = 20,
      manhunterOnTameFailChance = 0.10,
      manhunterOnDamageChance = 0.10,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 1.0,
        },
        {
          def = "AnimalAdult",
          minAge = 3.0,
        },
      },
    },
    comps = {
      CompProperties_Shearable = {
        woolDef = "WoolMegasloth",
        shearIntervalDays = 50,
        woolAmount = 400,
      },
    },
    tradeTags = {
      "AnimalUncommon",
      "AnimalFighter",
    },
  },

  ["ThingDef:Thrumbo"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Giant.xml",
      DLC = "Core",
    },
    defName = "Thrumbo",
    label = "thrumbo",
    description = [[A gigantic, graceful creature of unknown origin. The thrumbo is gentle by nature, but extremely dangerous when enraged. While its long fur is exceptionally beautiful, its hide is also incredibly resistant to damage. Its razor-sharp horn fetches a huge price.\n\nLegends say that an old thrumbo is the wisest creature in the universe - it simply chooses not to speak.]],
    statBases = {
      MoveSpeed = 5.5,
      MarketValue = 4000,
      ComfyTemperatureMin = -65,
      ComfyTemperatureMax = 50,
      ArmorRating_Sharp = 0.60,
      ArmorRating_Blunt = 0.40,
      ArmorRating_Heat = 0.30,
    },
    tools = {
      {
        label = "horn",
        capacities = {
          "Scratch",
          "Stab",
        },
        power = 23,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HornAttackTool",
      },
      {
        capacities = {
          "Bite",
        },
        power = 28,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "left foot",
        capacities = {
          "Blunt",
        },
        power = 19,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right foot",
        capacities = {
          "Blunt",
        },
        power = 19,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 17,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 4,
      foodType = {
        "VegetarianRoughAnimal",
        "DendrovoreAnimal",
      },
      leatherDef = "Leather_Thrumbo",
      trainability = "Advanced",
      gestationPeriodDays = 60,
      manhunterOnDamageChance = 1.00,
      wildness = 0.985,
      lifeExpectancy = 220,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 2.0,
        },
        {
          def = "AnimalAdult",
          minAge = 4.0,
        },
      },
    },
    tradeTags = {
      "AnimalExotic",
    },
  },

  ["ThingDef:BaseHare"] = {
    _ = {
      Abstract = true,
      ParentName = "AnimalThingBase",
      Name = "BaseHare",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Hares.xml",
      DLC = "Core",
    },
    statBases = {
      MoveSpeed = 6.0,
      MarketValue = 50,
      ComfyTemperatureMin = -30,
    },
    tools = {
      {
        capacities = {
          "Bite",
        },
        power = 3.4,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 1.5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 0.2,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Light",
      wildness = 0.75,
      trainability = "None",
      petness = 0.08,
      mateMtbHours = 8,
      nuzzleMtbHours = 36,
      gestationPeriodDays = 13,
      manhunterOnTameFailChance = 0,
      manhunterOnDamageChance = 0,
      litterSizeCurve = {
        points = {
          {1.0, 0},
          {1.5, 1},
          {2.0, 1},
          {2.5, 0},
        },
      },
      lifeExpectancy = 8,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.1,
        },
        {
          def = "AnimalAdult",
          minAge = 0.3,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
    },
  },

  ["ThingDef:Hare"] = {
    _ = {
      ParentName = "BaseHare",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Hares.xml",
      DLC = "Core",
    },
    defName = "Hare",
    label = "hare",
    description = [[This small, solitary herbivore can swiftly hop away from danger.]],
  },

  ["ThingDef:Snowhare"] = {
    _ = {
      ParentName = "BaseHare",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Hares.xml",
      DLC = "Core",
    },
    defName = "Snowhare",
    label = "snowhare",
    description = [[This hardy animal survives the brutal winters of its homelands by burrowing through snow to find edible plants.]],
    statBases = {
      ComfyTemperatureMin = -55,
    },
  },

  ["ThingDef:BaseInsect"] = {
    _ = {
      Abstract = true,
      ParentName = "AnimalThingBase",
      Name = "BaseInsect",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Insect.xml",
      DLC = "Core",
    },
    statBases = {
      ToxicSensitivity = 0,
      ComfyTemperatureMax = 60,
    },
    race = {
      foodType = {
        "OmnivoreAnimal",
        "AnimalProduct",
      },
      manhunterOnDamageChance = 0.35,
      manhunterOnTameFailChance = 0.20,
    },
  },

  ["ThingDef:Megascarab"] = {
    _ = {
      ParentName = "BaseInsect",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Insect.xml",
      DLC = "Core",
    },
    defName = "Megascarab",
    label = "megascarab",
    description = [[A large, genetically-engineered beetle. Once the worker caste of an artifical ecosystem of insectoids designed to fight mechanoid invasions, it is now often seen without its deadlier insectoid cousins. Still, its size and hard shell make it dangerous when it attacks. A eusocial creature, it cannot reproduce individually.]],
    statBases = {
      MoveSpeed = 3.75,
      ArmorRating_Blunt = 0.18,
      ArmorRating_Sharp = 0.72,
      ComfyTemperatureMin = 0,
      MarketValue = 100,
      LeatherAmount = 0,
    },
    tools = {
      {
        label = "mandibles",
        capacities = {
          "Bite",
        },
        power = 5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Mouth",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 4,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.1,
      },
    },
    race = {
      baseBodySize = 0.2,
      wildness = 0.95,
      lifeExpectancy = 10,
      lifeStageAges = {
        {
          def = "EusocialInsectLarva",
          minAge = 0,
        },
        {
          def = "EusocialInsectJuvenile",
          minAge = 0.03,
        },
        {
          def = "EusocialInsectAdult",
          minAge = 0.4,
        },
      },
    },
    tradeTags = {
      "AnimalInsect",
    },
  },

  ["ThingDef:Spelopede"] = {
    _ = {
      ParentName = "BaseInsect",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Insect.xml",
      DLC = "Core",
    },
    defName = "Spelopede",
    label = "spelopede",
    description = [[A medium-sized bioengineered insectoid the size of a sheep. The spelopede is the middle caste of a hive, taking care of most work tasks as well as fighting with its digging claws. It's dangerous in combat, but slow on open ground.]],
    statBases = {
      MoveSpeed = 3.65,
      ComfyTemperatureMin = -25,
      MarketValue = 200,
      LeatherAmount = 0,
      ArmorRating_Blunt = 0.18,
      ArmorRating_Sharp = 0.18,
    },
    tools = {
      {
        label = "head claw",
        capacities = {
          "Cut",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadClaw",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 0.8,
      gestationPeriodDays = 12,
      wildness = 0.95,
      lifeExpectancy = 6,
      lifeStageAges = {
        {
          def = "EusocialInsectLarva",
          minAge = 0,
        },
        {
          def = "EusocialInsectJuvenile",
          minAge = 0.03,
        },
        {
          def = "EusocialInsectAdult",
          minAge = 0.2,
        },
      },
    },
    tradeTags = {
      "AnimalInsect",
    },
  },

  ["ThingDef:Megaspider"] = {
    _ = {
      ParentName = "BaseInsect",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Insect.xml",
      DLC = "Core",
    },
    defName = "Megaspider",
    label = "megaspider",
    description = [[Not actually a spider, the megaspider is a genetically-engineered giant insectoid the size of a bear. Designed for heavy work and combat, its thick chitinous armor makes it hard to kill, while its long ripper-blades make it deadly at close quarters. It is, however, quite slow in open terrain.]],
    statBases = {
      MoveSpeed = 3.60,
      ComfyTemperatureMin = -40,
      MarketValue = 500,
      LeatherAmount = 0,
      ArmorRating_Blunt = 0.18,
      ArmorRating_Sharp = 0.27,
    },
    tools = {
      {
        label = "head claw",
        capacities = {
          "Cut",
        },
        power = 12,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "HeadClaw",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 1.2,
      gestationPeriodDays = 12,
      wildness = 0.95,
      lifeExpectancy = 6,
      lifeStageAges = {
        {
          def = "EusocialInsectLarva",
          minAge = 0,
        },
        {
          def = "EusocialInsectJuvenile",
          minAge = 0.03,
        },
        {
          def = "EusocialInsectAdult",
          minAge = 0.2,
        },
      },
    },
    tradeTags = {
      "AnimalInsect",
    },
  },

  ["ThingDef:YorkshireTerrier"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Pet.xml",
      DLC = "Core",
    },
    defName = "YorkshireTerrier",
    label = "yorkshire terrier",
    description = [[A small, even-tempered dog. Originally bred to hunt rats, it later became a show and companionship animal. Some consider it useless, but the mood boost it gives by nuzzling can outweight the cost of feeding it.]],
    statBases = {
      MoveSpeed = 3.1,
      MarketValue = 100,
      ComfyTemperatureMin = -15,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 3.6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 3.6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        label = "cute little teeth",
        capacities = {
          "Bite",
        },
        power = 4.8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 2,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      petness = 1,
      baseBodySize = 0.3,
      foodType = {
        "OmnivoreAnimal",
        "OvivoreAnimal",
      },
      leatherDef = "Leather_Dog",
      trainability = "Intermediate",
      wildness = 0,
      nuzzleMtbHours = 12,
      gestationPeriodDays = 24,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2, 1.7},
          {3, 0.7},
          {3.5, 0},
        },
      },
      lifeExpectancy = 15,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.1,
        },
        {
          def = "AnimalAdult",
          minAge = 0.3,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalPet",
    },
  },

  ["ThingDef:Husky"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Pet.xml",
      DLC = "Core",
    },
    defName = "Husky",
    label = "husky",
    description = [[A large, energetic dog with a thick fur coat for remaining comfortable in arctic environments.]],
    statBases = {
      MoveSpeed = 5.0,
      MarketValue = 250,
      ComfyTemperatureMin = -50,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 9.7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 9.7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 14.2,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      petness = 1,
      baseBodySize = 0.86,
      foodType = {
        "OmnivoreAnimal",
        "OvivoreAnimal",
      },
      leatherDef = "Leather_Dog",
      trainability = "Advanced",
      wildness = 0,
      nuzzleMtbHours = 12,
      gestationPeriodDays = 25,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2, 1.7},
          {2.5, 0.7},
          {3, 0},
        },
      },
      lifeExpectancy = 12,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.25,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalPet",
    },
  },

  ["ThingDef:LabradorRetriever"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Pet.xml",
      DLC = "Core",
    },
    defName = "LabradorRetriever",
    label = "labrador retriever",
    description = [[A very versatile, medium-sized dog. Originally bred to retrieve birds shot on the hunt, the lab is also an excellent guard dog, play pal, and family friend.]],
    statBases = {
      MoveSpeed = 5.0,
      MarketValue = 250,
      ComfyTemperatureMin = -30,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 8.5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 8.5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 14.2,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      petness = 1,
      baseBodySize = 0.75,
      foodType = {
        "OmnivoreAnimal",
        "OvivoreAnimal",
      },
      leatherDef = "Leather_Dog",
      gestationPeriodDays = 26,
      trainability = "Advanced",
      wildness = 0,
      nuzzleMtbHours = 12,
      manhunterOnDamageChance = 0,
      manhunterOnTameFailChance = 0,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2, 1.7},
          {3, 0.7},
          {3.5, 0},
        },
      },
      lifeExpectancy = 12,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.25,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalPet",
    },
  },

  ["ThingDef:Cat"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Pet.xml",
      DLC = "Core",
    },
    defName = "Cat",
    label = "cat",
    description = [[One of mankind's first pets, the cat is a small mammal which hunts vermin. Known for their aloofness, cats are nevertheless popular companions because of their independence, calm disposition, and fine, pettable fur.]],
    statBases = {
      MoveSpeed = 4.4,
      MarketValue = 100,
      ComfyTemperatureMin = -25,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 6,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 6,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 3,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 0.255,
      foodType = {
        "CarnivoreAnimal",
        "OvivoreAnimal",
      },
      leatherDef = "Leather_Light",
      wildness = 0.2,
      petness = 1,
      trainability = "None",
      nuzzleMtbHours = 12,
      gestationPeriodDays = 24,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2, 1.7},
          {3, 0.7},
          {3.5, 0},
        },
      },
      lifeExpectancy = 10,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.15,
        },
        {
          def = "AnimalAdult",
          minAge = 0.4,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalPet",
    },
  },

  ["ThingDef:Squirrel"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Rodentlike.xml",
      DLC = "Core",
    },
    defName = "Squirrel",
    label = "squirrel",
    description = [[One of the many hardy rodent species that follows humankind everywhere it spreads. Squirrels are distinguished by their bushy tails, which they use as umbrellas in bad weather.]],
    statBases = {
      MoveSpeed = 5.1,
      MarketValue = 35,
      ComfyTemperatureMin = -35,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 4,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 4,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 2,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 0.15,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Light",
      wildness = 0.75,
      trainability = "None",
      gestationPeriodDays = 13,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {1.8, 1},
          {2.4, 0},
        },
      },
      lifeExpectancy = 8,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.11,
        },
        {
          def = "AnimalAdult",
          minAge = 0.26,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
    },
  },

  ["ThingDef:Alphabeaver"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Rodentlike.xml",
      DLC = "Core",
    },
    defName = "Alphabeaver",
    label = "alphabeaver",
    description = [[A large beaver-like creature genetically engineered to harvest wood with machine-like efficiency. In the absence of specialized feed, these animals will enter a manic state that compels them to eat trees whole, and are likely to attack if disturbed.]],
    statBases = {
      MoveSpeed = 3.7,
      MarketValue = 250,
      ComfyTemperatureMin = -40,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 7.2,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 7.2,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 8.5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 3,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 0.45,
      foodType = {
        "DendrovoreAnimal",
      },
      leatherDef = "Leather_Light",
      wildness = 0.75,
      gestationPeriodDays = 17,
      manhunterOnTameFailChance = 0.10,
      manhunterOnDamageChance = 0.10,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {3, 1},
          {3.5, 0},
        },
      },
      lifeExpectancy = 12,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.15,
        },
        {
          def = "AnimalAdult",
          minAge = 0.35,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
    },
  },

  ["ThingDef:Capybara"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Rodentlike.xml",
      DLC = "Core",
    },
    defName = "Capybara",
    label = "capybara",
    description = [[The largest natural rodent, the capybara is well-adapted for steaming jungle environments.]],
    statBases = {
      MoveSpeed = 3.9,
      MarketValue = 150,
      ComfyTemperatureMin = -10,
      ComfyTemperatureMax = 50,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 8.4,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 8.4,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 8.5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 4,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 0.50,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Light",
      wildness = 0.75,
      petness = 0.08,
      nuzzleMtbHours = 60,
      gestationPeriodDays = 20,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {1.5, 1},
          {2, 0},
        },
      },
      lifeExpectancy = 12,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.4,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
    },
  },

  ["ThingDef:Chinchilla"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Rodentlike.xml",
      DLC = "Core",
    },
    defName = "Chinchilla",
    label = "chinchilla",
    description = [[A small, nimble rodent. Its fur is softer than just about anything in the universe, making it very valuable as a trade good.]],
    statBases = {
      MoveSpeed = 5.0,
      MarketValue = 150,
      ComfyTemperatureMin = -15,
      ComfyTemperatureMax = 55,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 3.6,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 3.6,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 5.8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 2,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 0.21,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Chinchilla",
      wildness = 0.60,
      trainability = "None",
      petness = 0.20,
      mateMtbHours = 8,
      nuzzleMtbHours = 24,
      gestationPeriodDays = 14,
      manhunterOnTameFailChance = 0,
      manhunterOnDamageChance = 0,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2.5, 1},
          {3, 0},
        },
      },
      lifeExpectancy = 9,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.15,
        },
        {
          def = "AnimalAdult",
          minAge = 0.30,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
    },
  },

  ["ThingDef:Boomrat"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Rodentlike.xml",
      DLC = "Core",
    },
    defName = "Boomrat",
    label = "boomrat",
    description = [[Either by deliberate genetic weaponization, or as an unusual defense mechanism, these rodent-like creatures create a powerful fire-starting explosion when killed.]],
    statBases = {
      MoveSpeed = 4.6,
      MarketValue = 100,
      ComfyTemperatureMin = -15,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 5.4,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 5.4,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 4.9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 3,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 0.2,
      foodType = {
        "OmnivoreRoughAnimal",
      },
      leatherDef = "Leather_Light",
      wildness = 0.75,
      petness = 0.20,
      mateMtbHours = 8,
      nuzzleMtbHours = 60,
      gestationPeriodDays = 14,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2.5, 1},
          {3, 0},
        },
      },
      lifeExpectancy = 8,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.1,
        },
        {
          def = "AnimalAdult",
          minAge = 0.35,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
      "AnimalFighter",
    },
  },

  ["ThingDef:Raccoon"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Rodentlike.xml",
      DLC = "Core",
    },
    defName = "Raccoon",
    label = "raccoon",
    description = [[A small, hardy animal that ranges wide across forests and shrubland. It is happy to break into your garbage container, or your kitchen, to eat almost anything.]],
    statBases = {
      MoveSpeed = 4.1,
      MarketValue = 100,
      ComfyTemperatureMin = -30,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 3,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 0.3,
      foodType = {
        "OmnivoreRoughAnimal",
      },
      leatherDef = "Leather_Light",
      wildness = 0.75,
      mateMtbHours = 8,
      gestationPeriodDays = 14,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2, 1},
          {2.5, 0},
        },
      },
      lifeExpectancy = 8,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.15,
        },
        {
          def = "AnimalAdult",
          minAge = 0.4,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
    },
  },

  ["ThingDef:Rat"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Rodentlike.xml",
      DLC = "Core",
    },
    defName = "Rat",
    label = "rat",
    description = [[A widely-hated rodent known for soiling kitchens and spreading disease, rats have a way of following humans everywhere they go. It eats almost anything and lives almost anywhere.]],
    statBases = {
      MoveSpeed = 4.0,
      MarketValue = 35,
      ComfyTemperatureMin = -30,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 3.6,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 3.6,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 2,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      baseBodySize = 0.15,
      foodType = {
        "OmnivoreRoughAnimal",
      },
      leatherDef = "Leather_Light",
      wildness = 0.50,
      trainability = "None",
      petness = 0.15,
      manhunterOnTameFailChance = 0,
      manhunterOnDamageChance = 0,
      mateMtbHours = 8,
      gestationPeriodDays = 12,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2.2, 1},
          {2.8, 0},
        },
      },
      lifeExpectancy = 8,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.07,
        },
        {
          def = "AnimalAdult",
          minAge = 0.3,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
    },
  },

  ["ThingDef:Deer"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Temperate.xml",
      DLC = "Core",
    },
    defName = "Deer",
    label = "deer",
    description = [[A medium-sized herding herbivore which prefers to live in mixed forests and plains. Deer are very quick.]],
    statBases = {
      MoveSpeed = 5.5,
      MarketValue = 250,
      ComfyTemperatureMin = -30,
    },
    tools = {
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        label = "teeth",
        capacities = {
          "Bite",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.5,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 0.9,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      wildness = 0.75,
      nuzzleMtbHours = 60,
      gestationPeriodDays = 24,
      lifeExpectancy = 15,
      manhunterOnDamageChance = 0,
      manhunterOnTameFailChance = 0,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
    },
  },

  ["ThingDef:Ibex"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Temperate.xml",
      DLC = "Core",
    },
    defName = "Ibex",
    label = "ibex",
    description = [[The wild ancestor of the domesticated goat. Ibexes live on marginal territory where most antelopes couldn't survive, eating lichens and sparse mountain plants. They're famous for dextrously hopping across bare cliff faces - and for their violent ramming attack.]],
    statBases = {
      MoveSpeed = 4.6,
      MarketValue = 250,
      ComfyTemperatureMin = -30,
    },
    tools = {
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.5,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 10,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "HeadAttackTool",
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 0.85,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      wildness = 0.55,
      gestationPeriodDays = 24,
      lifeExpectancy = 15,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
    },
  },

  ["ThingDef:Elk"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Temperate.xml",
      DLC = "Core",
    },
    defName = "Elk",
    label = "elk",
    description = [[A large member of the deer family, well-adapted to life in cold climates. Domesticated elk can be milked, but refuse to carry packs.]],
    statBases = {
      MoveSpeed = 5,
      MarketValue = 300,
      ComfyTemperatureMin = -50,
    },
    comps = {
      CompProperties_Milkable = {
        milkDef = "Milk",
        milkIntervalDays = 2,
        milkAmount = 12,
      },
    },
    tools = {
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.5,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 13,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "HeadAttackTool",
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 2.1,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      wildness = 0.75,
      gestationPeriodDays = 25,
      lifeExpectancy = 18,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.6,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:Caribou"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Temperate.xml",
      DLC = "Core",
    },
    defName = "Caribou",
    label = "caribou",
    description = [[A large member of the deer family, well-adapted to life in cold climates. Caribou can be milked, but refuse to carry packs.]],
    statBases = {
      MoveSpeed = 5,
      MarketValue = 300,
      ComfyTemperatureMin = -50,
    },
    comps = {
      CompProperties_Milkable = {
        milkDef = "Milk",
        milkIntervalDays = 2,
        milkAmount = 12,
      },
    },
    tools = {
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.5,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 13,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "HeadAttackTool",
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 2.1,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      wildness = 0.75,
      gestationPeriodDays = 25,
      lifeExpectancy = 18,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.45,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
      "AnimalFarm",
    },
  },

  ["ThingDef:WildBoar"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Temperate.xml",
      DLC = "Core",
    },
    defName = "WildBoar",
    label = "wild boar",
    description = [[This hairy omnivore is descended from escaped pigs and evolved for living in the wild.\n\nIts tusks make it a better fighter than its domesticated pig cousins. Unfortunately, it is too unruly to be trained in the most complex tasks.]],
    statBases = {
      MoveSpeed = 4.6,
      MarketValue = 200,
      ComfyTemperatureMin = -23,
    },
    tools = {
      {
        label = "tusk",
        capacities = {
          "Scratch",
          "Stab",
        },
        power = 9.7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "TuskAttackTool",
      },
      {
        capacities = {
          "Bite",
        },
        power = 8.5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.6,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 0.8,
      foodType = {
        "OmnivoreRoughAnimal",
      },
      wildness = 0.50,
      trainability = "Intermediate",
      leatherDef = "Leather_Pig",
      gestationPeriodDays = 18,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {1.5, 1},
          {2.0, 0},
        },
      },
      lifeExpectancy = 12,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.1,
        },
        {
          def = "AnimalAdult",
          minAge = 0.4,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
    },
  },

  ["ThingDef:Tortoise"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Temperate.xml",
      DLC = "Core",
    },
    defName = "Tortoise",
    label = "tortoise",
    description = [[This heavily armored land-dwelling reptile is known for its slow moving speed and surprisingly vicious bite. Because of its natural armor, it is tough to kill and can do serious damage during drawn-out melee fights.]],
    statBases = {
      MoveSpeed = 1.0,
      MarketValue = 200,
      ArmorRating_Blunt = 0.35,
      ArmorRating_Sharp = 0.50,
      ComfyTemperatureMin = 0,
      ComfyTemperatureMax = 50,
    },
    tools = {
      {
        label = "beak",
        capacities = {
          "Bite",
        },
        power = 8,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "TurtleBeakAttackTool",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 3,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    comps = {
      CompProperties_EggLayer = {
        eggFertilizedDef = "EggTortoiseFertilized",
        eggFertilizationCountMax = 1,
        eggLayIntervalDays = 20,
        eggProgressUnfertilizedMax = 0.5,
        eggCountRange = { ["<"]=1, [">"]=3 },
      },
    },
    race = {
      baseBodySize = 0.5,
      foodType = {
        "OmnivoreRoughAnimal",
      },
      leatherDef = "Leather_Lizard",
      wildness = 0.75,
      lifeExpectancy = 180,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.15,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
    },
  },

  ["ThingDef:Cobra"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Tropical.xml",
      DLC = "Core",
    },
    defName = "Cobra",
    label = "cobra",
    description = [[A large predatory snake. Cobras can be highly aggressive if provoked, and their bite injects toxic venom into the victim.]],
    statBases = {
      MoveSpeed = 3.5,
      MarketValue = 150,
      ComfyTemperatureMin = 0,
      ComfyTemperatureMax = 60,
    },
    tools = {
      {
        label = "venom-fangs",
        capacities = {
          "ToxicBite",
        },
        power = 12,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Mouth",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 3,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    comps = {
      CompProperties_EggLayer = {
        eggFertilizedDef = "EggCobraFertilized",
        eggFertilizationCountMax = 1,
        eggLayIntervalDays = 20.0,
        eggProgressUnfertilizedMax = 0.5,
        eggCountRange = { ["<"]=1, [">"]=2 },
      },
    },
    race = {
      baseBodySize = 0.25,
      foodType = {
        "CarnivoreAnimal",
        "OvivoreAnimal",
      },
      leatherDef = "Leather_Lizard",
      wildness = 0.75,
      petness = 0.05,
      manhunterOnTameFailChance = 0.10,
      manhunterOnDamageChance = 0.10,
      lifeExpectancy = 20,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.15,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
      "AnimalFighter",
    },
  },

  ["ThingDef:Monkey"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Tropical.xml",
      DLC = "Core",
    },
    defName = "Monkey",
    label = "monkey",
    description = [[A small primate, the monkey can use its curly tail to grab on to branches, leaving its hands free to do other things. Monkeys are selfish but clever, and can be trained to carry out fairly complex tasks.]],
    statBases = {
      MoveSpeed = 4.3,
      MarketValue = 100,
      ComfyTemperatureMin = -5,
      ComfyTemperatureMax = 50,
    },
    tools = {
      {
        label = "left fist",
        capacities = {
          "Blunt",
        },
        power = 3.6,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "LeftHand",
      },
      {
        label = "right fist",
        capacities = {
          "Blunt",
        },
        power = 3.6,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "RightHand",
      },
      {
        capacities = {
          "Bite",
        },
        power = 4,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.7,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 2,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      petness = 0.50,
      herdAnimal = true,
      baseBodySize = 0.35,
      foodType = {
        "OmnivoreRoughAnimal",
      },
      leatherDef = "Leather_Light",
      trainability = "Advanced",
      wildness = 0.60,
      nuzzleMtbHours = 24,
      gestationPeriodDays = 16,
      lifeExpectancy = 30,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.4,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
    },
  },

  ["ThingDef:Boomalope"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_Tropical.xml",
      DLC = "Core",
    },
    defName = "Boomalope",
    label = "boomalope",
    description = [[Engineered for chemicals production, the boomalope grows a large sac of volatile chemicals on its back. Though it is weak and fragile for its size, other animals have learned to avoid it because of the huge explosion it produces when it dies. It can be milked to produce chemfuel - very carefully.]],
    statBases = {
      MoveSpeed = 3.4,
      MarketValue = 350,
      ComfyTemperatureMin = -15,
    },
    comps = {
      CompProperties_Milkable = {
        milkDef = "Chemfuel",
        milkIntervalDays = 2,
        milkAmount = 12,
        milkFemaleOnly = false,
      },
    },
    tools = {
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 7,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
      {
        label = "left hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "right hoof",
        capacities = {
          "Blunt",
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        capacities = {
          "Bite",
        },
        power = 10,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.5,
      },
    },
    race = {
      herdAnimal = true,
      baseBodySize = 1.5,
      foodType = {
        "VegetarianRoughAnimal",
      },
      leatherDef = "Leather_Plain",
      wildness = 0.6,
      gestationPeriodDays = 28,
      lifeExpectancy = 15,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.5,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
      "AnimalFighter",
    },
  },

  ["ThingDef:Warg"] = {
    _ = {
      ParentName = "AnimalThingBase",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_WildCanines.xml",
      DLC = "Core",
    },
    defName = "Warg",
    label = "warg",
    description = [[Heavily-muscled wolf-like creatures with vicious unnatural claws and an absurdly powerful bite. They will only eat meat or corpses. If disturbed in the wild, they are very likely to attack.\n\nScientists say wargs are the descendants of weaponized military animals created for population suppression. The superstitious see them as the tools of an angry god.]],
    statBases = {
      MoveSpeed = 5.0,
      MarketValue = 450,
      ComfyTemperatureMin = -40,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 13,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 13,
        cooldownTime = 1.5,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        label = "razorfangs",
        capacities = {
          "Bite",
        },
        power = 15,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.9,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      petness = 0.5,
      baseBodySize = 1.0,
      foodType = {
        "CarnivoreAnimalStrict",
      },
      leatherDef = "Leather_Wolf",
      gestationPeriodDays = 26,
      trainability = "Advanced",
      wildness = 0.60,
      manhunterOnTameFailChance = 0.35,
      manhunterOnDamageChance = 0.35,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2, 1.7},
          {2.5, 0.7},
          {3, 0},
        },
      },
      lifeExpectancy = 15,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.45,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
      "AnimalFighter",
    },
  },

  ["ThingDef:ThingBaseWolf"] = {
    _ = {
      Name = "ThingBaseWolf",
      ParentName = "AnimalThingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Races_Animal_WildCanines.xml",
      DLC = "Core",
    },
    statBases = {
      MoveSpeed = 5.0,
      MarketValue = 350,
      ComfyTemperatureMin = -40,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 10.9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftPaw",
        chanceFactor = 0.5,
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 10.9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightPaw",
        chanceFactor = 0.5,
      },
      {
        capacities = {
          "Bite",
        },
        power = 12,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.9,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 6,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      petness = 0.1,
      baseBodySize = 0.85,
      foodType = {
        "CarnivoreAnimal",
      },
      leatherDef = "Leather_Wolf",
      trainability = "Advanced",
      wildness = 0.85,
      nuzzleMtbHours = 120,
      manhunterOnTameFailChance = 0.10,
      manhunterOnDamageChance = 0.10,
      gestationPeriodDays = 26,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2, 1.7},
          {2.5, 0.7},
          {3, 0},
        },
      },
      lifeExpectancy = 12,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.2,
        },
        {
          def = "AnimalAdult",
          minAge = 0.45,
        },
      },
    },
    tradeTags = {
      "AnimalUncommon",
      "AnimalFighter",
    },
  },

  ["ThingDef:Wolf_Timber"] = {
    _ = {
      ParentName = "ThingBaseWolf",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_WildCanines.xml",
      DLC = "Core",
    },
    defName = "Wolf_Timber",
    label = "timber wolf",
    description = [[A rugged predator long feared by many ancient Earth cultures. As pack hunters, wolves have complex social lives and are fiercely intelligent.]],
  },

  ["ThingDef:Wolf_Arctic"] = {
    _ = {
      ParentName = "ThingBaseWolf",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_WildCanines.xml",
      DLC = "Core",
    },
    defName = "Wolf_Arctic",
    label = "arctic wolf",
    description = [[An arctic variant of the old Earth wolf. As pack hunters, wolves have a complex social life and are fiercely intelligent.]],
    statBases = {
      ComfyTemperatureMin = -55,
    },
  },

  ["ThingDef:ThingBaseFox"] = {
    _ = {
      Name = "ThingBaseFox",
      ParentName = "AnimalThingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Races_Animal_WildCanines.xml",
      DLC = "Core",
    },
    statBases = {
      MoveSpeed = 4.6,
      ComfyTemperatureMin = -35,
      MarketValue = 200,
    },
    tools = {
      {
        label = "left claw",
        capacities = {
          "Scratch",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftPaw",
      },
      {
        label = "right claw",
        capacities = {
          "Scratch",
        },
        power = 8,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightPaw",
      },
      {
        capacities = {
          "Bite",
        },
        power = 9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.9,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 4,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      petness = 0.1,
      baseBodySize = 0.55,
      foodType = {
        "CarnivoreAnimal",
      },
      leatherDef = "Leather_Fox",
      trainability = "Advanced",
      wildness = 0.75,
      nuzzleMtbHours = 60,
      gestationPeriodDays = 21,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {2, 1.7},
          {2.5, 0.7},
          {3, 0},
        },
      },
      lifeExpectancy = 9,
      lifeStageAges = {
        {
          def = "AnimalBaby",
          minAge = 0,
        },
        {
          def = "AnimalJuvenile",
          minAge = 0.15,
        },
        {
          def = "AnimalAdult",
          minAge = 0.35,
        },
      },
    },
    tradeTags = {
      "AnimalCommon",
    },
  },

  ["ThingDef:Fox_Fennec"] = {
    _ = {
      ParentName = "ThingBaseFox",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_WildCanines.xml",
      DLC = "Core",
    },
    defName = "Fox_Fennec",
    label = "fennec fox",
    description = [[A small fox originally from the northern part of Earth's Africa continent. It hunts small creatures and has very large ears for cooling itself in the heat.]],
    statBases = {
      ComfyTemperatureMin = -30,
    },
  },

  ["ThingDef:Fox_Red"] = {
    _ = {
      ParentName = "ThingBaseFox",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_WildCanines.xml",
      DLC = "Core",
    },
    defName = "Fox_Red",
    label = "red fox",
    description = [[A small solitary canine evolved for hunting small prey in temperate climates. Chicken farmers hate foxes because of their ability to destroy a whole coop in minutes.]],
  },

  ["ThingDef:Fox_Arctic"] = {
    _ = {
      ParentName = "ThingBaseFox",
      DefCategory = "ThingDef",
      FileName = "Races_Animal_WildCanines.xml",
      DLC = "Core",
    },
    defName = "Fox_Arctic",
    label = "arctic fox",
    description = [[A small predator adapted for cold climates. It usually hunts small game like mice and voles, sometimes burrowing through a meter of snow to reach its prey.]],
    statBases = {
      ComfyTemperatureMin = -50,
    },
  },

  ["ThingDef:Human"] = {
    _ = {
      ParentName = "BasePawn",
      DefCategory = "ThingDef",
      FileName = "Races_Humanlike.xml",
      DLC = "Core",
    },
    defName = "Human",
    label = "human",
    description = [[A baseline human, mostly unmodified by gene engineering and mostly unchanged by evolutionary pressures on non-Earth planets.]],
    statBases = {
      MarketValue = 1750,
      MoveSpeed = 4.6,
      ComfyTemperatureMin = 16,
      ComfyTemperatureMax = 26,
      LeatherAmount = 50,
      RoyalFavorValue = 3,
    },
    tools = {
      {
        label = "left fist",
        capacities = {
          "Blunt",
        },
        power = 8.2,
        cooldownTime = 2,
        linkedBodyPartsGroup = "LeftHand",
      },
      {
        label = "right fist",
        capacities = {
          "Blunt",
        },
        power = 8.2,
        cooldownTime = 2,
        linkedBodyPartsGroup = "RightHand",
      },
      {
        label = "teeth",
        capacities = {
          "Bite",
        },
        power = 8.2,
        cooldownTime = 2,
        linkedBodyPartsGroup = "Teeth",
        chanceFactor = 0.07,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      lifeExpectancy = 80,
      leatherDef = "Leather_Human",
      baseBodySize = 1,
      foodType = {
        "OmnivoreHuman",
      },
      gestationPeriodDays = 45,
      manhunterOnDamageChance = 0.20,
      manhunterOnTameFailChance = 0.02,
      litterSizeCurve = {
        points = {
          {0.5, 0},
          {1, 1},
          {1.01, 0.02},
          {3.5, 0},
        },
      },
      lifeStageAges = {
        {
          def = "HumanlikeBaby",
          minAge = 0,
        },
        {
          def = "HumanlikeToddler",
          minAge = 1.2,
        },
        {
          def = "HumanlikeChild",
          minAge = 4,
        },
        {
          def = "HumanlikeTeenager",
          minAge = 13,
        },
        {
          def = "HumanlikeAdult",
          minAge = 18,
        },
      },
    },
  },

  ["ThingDef:BaseMechanoid"] = {
    _ = {
      ParentName = "BasePawn",
      Name = "BaseMechanoid",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Races_Mechanoid.xml",
      DLC = "Core",
    },
    statBases = {
      PsychicSensitivity = 0.5,
      ToxicSensitivity = 0,
      Flammability = 0,
      ComfyTemperatureMin = -100,
      ComfyTemperatureMax = 250,
      MeatAmount = 0,
      ArmorRating_Heat = 2.00,
    },
    race = {
      foodType = {
        "None",
      },
      lifeExpectancy = 2500,
    },
    comps = {
      CompProperties_CanBeDormant = {},
      CompProperties_WakeUpDormant = {
        wakeUpOnDamage = true,
        anyColonistCloseCheckRadius = 30,
        wakeUpSound = "MechanoidsWakeUp",
      },
    },
  },

  ["ThingDef:Mech_Centipede"] = {
    _ = {
      ParentName = "BaseMechanoid",
      DefCategory = "ThingDef",
      FileName = "Races_Mechanoid.xml",
      DLC = "Core",
    },
    defName = "Mech_Centipede",
    label = "centipede",
    description = [[Heavy combat mechanoids that glide on dozens of tiny legs. Their thick carpace and firepower makes them very effective against bunched-up static defenders. They are somewhat vulnerable to mobile hit-and-run tactics.]],
    statBases = {
      MoveSpeed = 1.9,
      ArmorRating_Blunt = 0.22,
      ArmorRating_Sharp = 0.72,
      PsychicSensitivity = 0.75,
    },
    tools = {
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 17,
        cooldownTime = 2.6,
        linkedBodyPartsGroup = "HeadAttackTool",
      },
    },
    race = {
      baseBodySize = 1.8,
      lifeStageAges = {
        {
          def = "MechanoidFullyFormed",
          minAge = 0,
        },
      },
    },
  },

  ["ThingDef:BaseMechanoidWalker"] = {
    _ = {
      ParentName = "BaseMechanoid",
      Name = "BaseMechanoidWalker",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Races_Mechanoid.xml",
      DLC = "Core",
    },
    statBases = {
      MoveSpeed = 4.7,
      ArmorRating_Blunt = 0.20,
      ArmorRating_Sharp = 0.40,
    },
    race = {
      baseBodySize = 1.0,
      lifeStageAges = {
        {
          def = "MechanoidFullyFormed",
          minAge = 0,
        },
      },
    },
  },

  ["ThingDef:Mech_Lancer"] = {
    _ = {
      ParentName = "BaseMechanoidWalker",
      DefCategory = "ThingDef",
      FileName = "Races_Mechanoid.xml",
      DLC = "Core",
    },
    defName = "Mech_Lancer",
    label = "lancer",
    description = [[Fast human-sized combat mechanoids built for medium and long-range combat. Their bodies are light, making them vulnerable targets at close range - especially in melee combat.]],
    tools = {
      {
        label = "left fist",
        capacities = {
          "Blunt",
        },
        power = 12.0,
        cooldownTime = 2,
        linkedBodyPartsGroup = "LeftHand",
      },
      {
        label = "right fist",
        capacities = {
          "Blunt",
        },
        power = 12.0,
        cooldownTime = 2,
        linkedBodyPartsGroup = "RightHand",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 8.5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
  },

  ["ThingDef:Mech_Scyther"] = {
    _ = {
      ParentName = "BaseMechanoidWalker",
      DefCategory = "ThingDef",
      FileName = "Races_Mechanoid.xml",
      DLC = "Core",
    },
    defName = "Mech_Scyther",
    label = "scyther",
    description = [[Fast, spindly, human-sized combat mechanoids specializing in rapid approach and close-range combat. Their bodies are covered in points and blades, but their mostly use two arm blades to lop off limbs or gut their victims alive.]],
    tools = {
      {
        label = "left blade",
        capacities = {
          "Cut",
          "Stab",
        },
        power = 20,
        cooldownTime = 2,
        linkedBodyPartsGroup = "LeftBlade",
      },
      {
        label = "right blade",
        capacities = {
          "Cut",
          "Stab",
        },
        power = 20,
        cooldownTime = 2,
        linkedBodyPartsGroup = "RightBlade",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 9,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
  },

  ["ThingDef:Mech_Pikeman"] = {
    _ = {
      ParentName = "BaseMechanoidWalker",
      DefCategory = "ThingDef",
      FileName = "Races_Mechanoid.xml",
      DLC = "Core",
    },
    defName = "Mech_Pikeman",
    label = "pikeman",
    description = [[A clunky multi-legged combat mechanoid specialized as a long-range weapons platform. While effective at distance, it is weak in close-range fights and in melee combat.\n\nVeterans of mechanoid wars know that often, the safest place to be around a pikeman is touching it.]],
    statBases = {
      MoveSpeed = 2.5,
    },
    tools = {
      {
        label = "front left leg",
        capacities = {
          "Blunt",
        },
        power = 12.0,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontLeftLeg",
      },
      {
        label = "front right leg",
        capacities = {
          "Blunt",
        },
        power = 12.0,
        cooldownTime = 2,
        linkedBodyPartsGroup = "FrontRightLeg",
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 8.5,
        cooldownTime = 2,
        linkedBodyPartsGroup = "HeadAttackTool",
        chanceFactor = 0.2,
      },
    },
    race = {
      lifeStageAges = {
        _ = {
          Inherit = false,
        },
        {
          def = "MechanoidFullyFormed",
          minAge = 0,
        },
      },
    },
  },

  ["ThingDef:PsychicSensitizer"] = {
    _ = {
      ParentName = "BodyPartRoyalBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Archotech_EmpireRoyal.xml",
      DLC = "Royalty",
    },
    defName = "PsychicSensitizer",
    label = "psychic sensitizer",
    description = [[This brain implant stimulates growth in the regions of the brain related to psychic interaction, thus increasing psychic sensitivity.]],
    statBases = {
      MarketValue = 1000,
    },
  },

  ["ThingDef:PsychicHarmonizer"] = {
    _ = {
      ParentName = "BodyPartRoyalBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Archotech_EmpireRoyal.xml",
      DLC = "Royalty",
    },
    defName = "PsychicHarmonizer",
    label = "psychic harmonizer",
    description = [[This brain implant projects the user's mood in a spherical psychic field, forcing others nearby to feel a blurred, simplified version of their emotions. It can be a powerful tool to keep morale high, but if the user becomes unhappy, it can lead to collective disaster.]],
    statBases = {
      MarketValue = 800,
    },
  },

  ["ThingDef:PsychicReader"] = {
    _ = {
      ParentName = "BodyPartRoyalBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Archotech_EmpireRoyal.xml",
      DLC = "Royalty",
    },
    defName = "PsychicReader",
    label = "psychic reader",
    description = [[Gives limited mind-reading ability, improving the user's ability to get the upper hand in negotiations and social situations. The effect is proportional to the user's psychic sensitivity.]],
    statBases = {
      MarketValue = 1000,
    },
  },

  ["ThingDef:BodyPartProstheticImperialBase"] = {
    _ = {
      Name = "BodyPartProstheticImperialBase",
      ParentName = "BodyPartProstheticMakeableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_BaseEmpire.xml",
      DLC = "Royalty",
    },
    tradeTags = {
      "ImplantEmpireCommon",
    },
  },

  ["ThingDef:BodyPartBionicImperialBase"] = {
    _ = {
      Name = "BodyPartBionicImperialBase",
      ParentName = "BodyPartBionicBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_BaseEmpire.xml",
      DLC = "Royalty",
    },
    tradeTags = {
      "ImplantEmpireCommon",
    },
  },

  ["ThingDef:BodyPartRoyalBase"] = {
    _ = {
      Name = "BodyPartRoyalBase",
      ParentName = "BodyPartArchotechBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_BaseEmpire.xml",
      DLC = "Royalty",
    },
    tradeTags = {
      "ImplantEmpireRoyal",
    },
  },

  ["ThingDef:Neurocalculator"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "Neurocalculator",
    label = "neurocalculator",
    description = [[A non-intelligent microcomputer controlled by a visual/tactile neural interface. It assists with memory and calculation, like a calculator and notepad embedded in the brain.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "NeuralComputation",
    },
  },

  ["ThingDef:LearningAssistant"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "LearningAssistant",
    label = "learning assistant",
    description = [[A sensory recording system that replays important experiences during sleep, strengthening the formation of new memories.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "NeuralComputation",
    },
  },

  ["ThingDef:GastroAnalyzer"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "GastroAnalyzer",
    label = "gastro-analyzer",
    description = [[This bionic nose implant enhances the sense of smell, with a focus towards food-related smells. A multi-layered ultrafine absorption mesh detects compounds in the air. A microprocessor formats the readings into an olfactory nerve signal to send to the brain through a nerve-link interface. The result is that the user can smell foods with a depth, richness, and precision unknown among unenhanced humans, allowing them to cook more effectively. The whole unit is small enough to be installed in the nose without affecting the user's appearance.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 3,
    },
    recipeMaker = {
      researchPrerequisite = "MolecularAnalysis",
    },
  },

  ["ThingDef:Immunoenhancer"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "Immunoenhancer",
    label = "immunoenhancer",
    description = [[An analysis computer inspects the bloodstream, classifies pathogens, and rapidly prompts the body's natural immune system to respond to them faster than it could alone. This speeds immunity gain significantly.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "MolecularAnalysis",
    },
  },

  ["ThingDef:Coagulator"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "Coagulator",
    label = "coagulator",
    description = [[Releases coagulating factors in response to blood loss, reducing bleeding rates significantly.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "HealingFactors",
    },
  },

  ["ThingDef:HealingEnhancer"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "HealingEnhancer",
    label = "healing enhancer",
    description = [[Releases nanomachines and healing factors that speed up wound healing. This implant only helps with physical wounds, and does nothing to combat disease or other health problems.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "HealingFactors",
    },
  },

  ["ThingDef:ToughskinGland"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "ToughskinGland",
    label = "toughskin gland",
    description = [[This bionic gland releases chemicals and nanomachines that toughen the skin, making it somewhat more resistant to damage. While it doesn't add as much protection as some other skin-hardening glands, the toughskin gland has the advantage of not noticeably altering the user's appearance.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "SkinHardening",
    },
  },

  ["ThingDef:ArmorskinGland"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "ArmorskinGland",
    label = "armorskin gland",
    description = [[This bionic gland releases chemicals and nanomachines that toughen the skin and add flexible subdermal keratin plates at strategic points. This makes the user more resistant to damage across their whole body. Unfortunately, these changes make the skin appear leathery, with wrinkles across the whole body and face, which is generally considered ugly.]],
    costList = {
      Plasteel = 20,
      ComponentSpacer = 6,
    },
    recipeMaker = {
      researchPrerequisite = "SkinHardening",
    },
  },

  ["ThingDef:StoneskinGland"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "StoneskinGland",
    label = "stoneskin gland",
    description = [[This bionic gland releases chemical and nanomachines that transform the user's skin into a built-in suit of armor. The whole epidermis thickens and hardens to resist burns, while jointed exterior keratin plates form everywhere they can - including the head and face. While it's very difficult to physically hurt someone using this implant, the plates and hard skin significantly reduces the user's physical attractiveness.]],
    costList = {
      Plasteel = 25,
      ComponentSpacer = 8,
    },
    recipeMaker = {
      researchPrerequisite = "SkinHardening",
    },
  },

  ["ThingDef:AestheticShaper"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "AestheticShaper",
    label = "aesthetic shaper",
    description = [[A sophisticated package of hormonal and mechanite influences shapes the muscles and fat on the body, adding non-functional aesthetic tissue where needed to achieve a desired appearance. This implant can be configured to form various body shapes according to the user's taste - or that of their partner.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 3,
    },
    recipeMaker = {
      researchPrerequisite = "FleshShaping",
    },
  },

  ["ThingDef:AestheticNose"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "AestheticNose",
    label = "aesthetic nose",
    description = [[The nose is shaped to the user's desired form, matching prevalent beauty standards and enhancing physical impressions.]],
    costList = {
      Plasteel = 10,
      ComponentSpacer = 2,
    },
    recipeMaker = {
      researchPrerequisite = "FleshShaping",
    },
  },

  ["ThingDef:LoveEnhancer"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "LoveEnhancer",
    label = "love enhancer",
    description = [[Humans have always tried to use every new technology to enhance sexual satisfaction. Bionics were no exception. This implant makes physical and chemical changes to the body which enhance the experience of lovin' for both partners - both physically and psychologically. The implant unit can adapt to enhance both men and women upon being implanted.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "FleshShaping",
    },
  },

  ["ThingDef:DetoxifierStomach"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "DetoxifierStomach",
    label = "detoxifier stomach",
    description = [[An artificial stomach replacement with a broad-spectrum toxin filter and neutralization system. It allows the user to eat almost anything without ever worrying about food poisoning.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "ArtificialMetabolism",
    },
  },

  ["ThingDef:ReprocessorStomach"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "ReprocessorStomach",
    label = "reprocessor stomach",
    description = [[An advanced chemical processing system breaks down nutrients the body could normally never use, leading to increased efficiency.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "ArtificialMetabolism",
    },
  },

  ["ThingDef:NuclearStomach"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "NuclearStomach",
    label = "nuclear stomach",
    description = [[A micro-nuclear reactor combined with complex chemical synthesis replaces the body's need for food energy. Food is required only to replace matter lost from the body, reducing the user's intake needs significantly. This artifical stomach cannot get food poisoning. However, there is little room to shield the reactor, so the radiation increases the risk of cancer.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "ArtificialMetabolism",
    },
  },

  ["ThingDef:CircadianAssistant"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "CircadianAssistant",
    label = "circadian assistant",
    description = [[An artificial gland. Produces chemicals and nanomachines that clear toxin buildup from the brain.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "CircadianInfluence",
    },
  },

  ["ThingDef:CircadianHalfCycler"] = {
    _ = {
      ParentName = "BodyPartBionicImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Bionic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "CircadianHalfCycler",
    label = "circadian half-cycler",
    description = [[A signal redirector which isolates half of the brain, allowing the other half to sleep while the user remains outwardly awake. By alternating brain halves, the user never needs to sleep. Unfortunately, two hemispheres are better than one - working with half a brain causes a reduction in consciousness.]],
    costList = {
      Plasteel = 15,
      ComponentSpacer = 4,
    },
    recipeMaker = {
      researchPrerequisite = "CircadianInfluence",
    },
  },

  ["ThingDef:Mindscrew"] = {
    _ = {
      ParentName = "BodyPartProstheticImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "Mindscrew",
    label = "mindscrew",
    description = [[Inflicts continuous pain on the user. Mindscrews are used by some authorities as a long-term punishment. Some even install them voluntarily as a demonstration of ideological or religious devotion.]],
    costList = {
      Steel = 15,
      ComponentIndustrial = 4,
    },
    recipeMaker = {
      researchPrerequisite = "BrainWiring",
    },
  },

  ["ThingDef:DrillArm"] = {
    _ = {
      ParentName = "BodyPartProstheticImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "DrillArm",
    label = "drill arm",
    description = [[A mechanical arm replacement for speeding up mining. It has a built-in snake drill, which allows the miner to rapidly find and exploit weak lines in the rock. It also has a general-purpose manipulator. It is somewhat ungainly, which slows down movement slightly.]],
    costList = {
      Steel = 60,
      ComponentIndustrial = 8,
    },
    recipeMaker = {
      researchPrerequisite = "SpecializedLimbs",
    },
  },

  ["ThingDef:FieldHand"] = {
    _ = {
      ParentName = "BodyPartProstheticImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "FieldHand",
    label = "field hand",
    description = [[This mechanical hand replacement is made to speed up the sowing and harvesting tasks of a farmer. Multiple telescoping finger-like protrusions can simultaneously harvest from several points on the same plant, or precisely sow several holes at once. It also has a general-purpose manipulator. It is somewhat ungainly, which slows down movement slightly.]],
    costList = {
      Steel = 60,
      ComponentIndustrial = 8,
    },
    recipeMaker = {
      researchPrerequisite = "SpecializedLimbs",
    },
  },

  ["ThingDef:HandTalon"] = {
    _ = {
      ParentName = "BodyPartProstheticImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "HandTalon",
    label = "hand talon",
    description = [[A razor-sharp talon which extends from a hidden opening between the middle and ring fingers. The talon is longer than the palm, but it becomes flexible upon retracting, allowing the user to curl it up and conceal it inside the hand. It can perform rapid slashing attacks, but is poor at penetrating armor.]],
    costList = {
      Steel = 40,
      ComponentIndustrial = 7,
    },
    recipeMaker = {
      researchPrerequisite = "CompactWeaponry",
    },
  },

  ["ThingDef:ElbowBlade"] = {
    _ = {
      ParentName = "BodyPartProstheticImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "ElbowBlade",
    label = "elbow blade",
    description = [[A razor-sharp blade that extends at will from a hidden opening at the end of the ulna. Appearing without warning, it can be used for devastating slice attacks.]],
    costList = {
      Steel = 40,
      ComponentIndustrial = 7,
    },
    recipeMaker = {
      researchPrerequisite = "CompactWeaponry",
    },
  },

  ["ThingDef:KneeSpike"] = {
    _ = {
      ParentName = "BodyPartProstheticImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "KneeSpike",
    label = "knee spike",
    description = [[A spike that extends at will from a hidden opening on the front of the knee. Appearing without warning, it can be used for devastating stabbing attacks which penetrate even thick armor.]],
    costList = {
      Steel = 40,
      ComponentIndustrial = 7,
    },
    recipeMaker = {
      researchPrerequisite = "CompactWeaponry",
    },
  },

  ["ThingDef:VenomFangs"] = {
    _ = {
      ParentName = "BodyPartProstheticImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "VenomFangs",
    label = "venom fangs",
    description = [[A pair of injectors implanted through the canine teeth, connected to a venom pump. The user can bite an enemy, extend the injectors, and pump venom into the target.]],
    costList = {
      Steel = 40,
      ComponentIndustrial = 7,
    },
    recipeMaker = {
      researchPrerequisite = "VenomSynthesis",
    },
  },

  ["ThingDef:VenomTalon"] = {
    _ = {
      ParentName = "BodyPartProstheticImperialBase",
      DefCategory = "ThingDef",
      FileName = "Hediffs_BodyParts_Prosthetic_Empire.xml",
      DLC = "Royalty",
    },
    defName = "VenomTalon",
    label = "venom talon",
    description = [[A retractable finger talon connected to a venom pump in the lower arm. The user can scratch an enemy while squirting venom into the wound. The talon is designed to be installed in the middle finger. It's fast, but poor at penetrating armor.]],
    costList = {
      Steel = 40,
      ComponentIndustrial = 7,
    },
    recipeMaker = {
      researchPrerequisite = "VenomSynthesis",
    },
  },

  ["ThingDef:PsychicAmplifier"] = {
    _ = {
      DefCategory = "ThingDef",
      FileName = "Hediffs_Psycasts.xml",
      DLC = "Royalty",
    },
    defName = "PsychicAmplifier",
    label = "psylink neuroformer",
    description = [[A consumable archotech-created device that forms or upgrades a psylink in the user's mind.\n\nThe user presses the device over the eyes, where it links to the brain directly and restructures part of it. Afterwards, the device disintegrates into worthless ash.]],
    thingClass = "ThingWithComps",
    category = "Item",
    useHitPoints = true,
    pathCost = 14,
    altitudeLayer = "Item",
    thingCategories = {
      "BodyPartsArchotech",
    },
    statBases = {
      MaxHitPoints = 100,
      Beauty = -4,
      Mass = 1,
      MarketValue = 2600,
      DeteriorationRate = 0,
    },
    tradeTags = {
      "PsylinkNeuroformer",
    },
    comps = {
      CompProperties_Usable = {
        compClass = "CompUsableImplant",
        useJob = "UseItem",
        useLabel = "Use neuroformer to form psylink",
      },
      CompProperties_UseEffectInstallImplant = {
        hediffDef = "PsychicAmplifier",
        bodyPart = "Brain",
        canUpgrade = true,
      },
      CompProperties_UseEffectPlaySound = {
        soundOnUsed = "PsyAmpInstalled",
      },
      CompProperties_UseEffect = {
        compClass = "CompUseEffect_DestroySelf",
      },
      CompProperties_Forbiddable = {},
    },
  },

  ["ThingDef:ConditionCauserBase"] = {
    _ = {
      Name = "ConditionCauserBase",
      Abstract = true,
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_ConditionCausers.xml",
      DLC = "Royalty",
    },
    altitudeLayer = "Building",
    pathCost = 50,
    passability = "Impassable",
    fillPercent = 1.0,
    statBases = {
      MaxHitPoints = 1500,
      Flammability = 0,
    },
    building = {
      combatPower = 750,
      buildingTags = {
        "MechClusterMember",
        "MechClusterProblemCauser",
      },
    },
    comps = {
      CompProperties_WakeUpDormant = {},
      CompProperties_Initiatable = {},
    },
    terrainAffordanceNeeded = "Heavy",
    killedLeavings = {
      Steel = 60,
      ComponentIndustrial = 1,
      Plasteel = 10,
      ChunkSlagSteel = 4,
    },
  },

  ["ThingDef:SunBlocker"] = {
    _ = {
      ParentName = "ConditionCauserBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_ConditionCausers.xml",
      DLC = "Royalty",
    },
    defName = "SunBlocker",
    label = "sun blocker",
    description = [[An ultratech machine that generates a sheet of exotic fields at high altitude, turning the sky opaque and blocking the sun.]],
    size = {6, 4},
    comps = {
      CompProperties_CausesGameCondition = {
        conditionDef = "SunBlocker",
        worldRange = 10,
      },
    },
  },

  ["ThingDef:SmokeSpewer"] = {
    _ = {
      ParentName = "ConditionCauserBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_ConditionCausers.xml",
      DLC = "Royalty",
    },
    defName = "SmokeSpewer",
    label = "smoke spewer",
    description = [[An ultratech weapon of mass destruction designed for area denial. By harvesting available compounds and converting them into self-reproducing opaque molecules, it can spew enough smoke to block the sun in a whole region of the planet.]],
    size = {6, 5},
    comps = {
      CompProperties_CausesGameCondition = {
        conditionDef = "GiantSmokeCloud",
        worldRange = 10,
      },
      CompProperties_ThrownMoteEmitter = {
        mote = "Mote_Smoke",
        offsetMin = {-2, 0, 3},
        offsetMax = {2, 0, 3},
        emissionInterval = 15,
        burstCount = 2,
        scale = { ["<"]=2, [">"]=4 },
        rotationRate = { ["<"]=-30, [">"]=30 },
        velocityX = { ["<"]=-40, [">"]=40 },
        velocityY = { ["<"]=0.5, [">"]=1 },
        colorA = {0.2, 0.2, 0.2, 1},
        colorB = {0.4, 0.4, 0.4, 1},
      },
    },
  },

  ["ThingDef:ToxicSpewer"] = {
    _ = {
      ParentName = "ConditionCauserBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_ConditionCausers.xml",
      DLC = "Royalty",
    },
    defName = "ToxicSpewer",
    label = "toxic spewer",
    description = [[An ultratech weapon of mass destruction designed for area denial. This device harvests available compounds and converts them into self-reproducing poisons. By spewing these into the atmosphere, it can poison a whole region of the planet.]],
    size = {6, 5},
    comps = {
      CompProperties_CausesGameCondition = {
        compClass = "CompCauseGameCondition_ToxicSpewer",
        conditionDef = "ToxicSpewer",
        worldRange = 3,
      },
      CompProperties_ThrownMoteEmitter = {
        mote = "Mote_DustSlow",
        offsetMin = {-2, 0, -1.5},
        offsetMax = {0, 0, -2},
        emissionInterval = 520,
        burstCount = 35,
        scale = { ["<"]=1, [">"]=2.5 },
        rotationRate = { ["<"]=-30, [">"]=30 },
        velocityX = { ["<"]=-50, [">"]=50 },
        velocityY = { ["<"]=0.5, [">"]=1.8 },
        colorA = {0.25, 0.4, 0, 0.9},
        colorB = {0.4, 0.55, 0, 0.6},
      },
    },
  },

  ["ThingDef:WeatherController"] = {
    _ = {
      ParentName = "ConditionCauserBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_ConditionCausers.xml",
      DLC = "Royalty",
    },
    defName = "WeatherController",
    label = "weather controller",
    description = [[An ultratech device for controlling weather. Using chemicals and exotic fields, it forces the weather into a particular configuration.]],
    size = {6, 6},
    comps = {
      CompProperties_CausesGameCondition = {
        conditionDef = "WeatherController",
        compClass = "CompCauseGameCondition_ForceWeather",
        worldRange = 10,
        preventConditionStacking = false,
      },
    },
  },

  ["ThingDef:ClimateAdjuster"] = {
    _ = {
      ParentName = "ConditionCauserBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_ConditionCausers.xml",
      DLC = "Royalty",
    },
    defName = "ClimateAdjuster",
    label = "climate adjuster",
    description = [[An ultratech device for controlling climate. Using chemicals and exotic fields to manipulate the atmosphere, it shifts the temperature in this region of the world.]],
    size = {6, 6},
    comps = {
      CompProperties_CausesGameCondition_ClimateAdjuster = {
        conditionDef = "ClimateAdjustment",
        worldRange = 10,
        preventConditionStacking = false,
      },
    },
  },

  ["ThingDef:PsychicDroner"] = {
    _ = {
      ParentName = "ConditionCauserBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_ConditionCausers.xml",
      DLC = "Royalty",
    },
    defName = "PsychicDroner",
    label = "psychic droner",
    description = [[An archotech device transmitting the thoughts of a mad superintelligence. It generates a massive psychic drone tuned to one gender and affecting a whole region of the planet. People of that gender will be disturbed by the effect, reducing their mood and possibly driving them insane. The effect is modulated by an individual's psychic sensitivity.]],
    size = {6, 6},
    comps = {
      CompProperties_CausesGameCondition_PsychicEmanation = {
        conditionDef = "PsychicDroner",
        preventConditionStacking = false,
        compClass = "CompCauseGameCondition_PsychicEmanation",
        worldRange = 10,
      },
      CompProperties_MoteEmitter = {
        mote = "Mote_PsychicConditionCauserEffect",
        emissionInterval = 150,
      },
    },
  },

  ["ThingDef:PsychicSuppressor"] = {
    _ = {
      ParentName = "ConditionCauserBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_ConditionCausers.xml",
      DLC = "Royalty",
    },
    defName = "PsychicSuppressor",
    label = "psychic suppressor",
    description = [[An archotech device that generates a massive psychic suppression field tuned to a particular gender. People of that gender have their psychic activity suppressed, reducing their consciousness. The effect is modulated by an individual's psychic sensitivity.]],
    size = {6, 6},
    comps = {
      CompProperties_CausesGameCondition = {
        conditionDef = "PsychicSuppression",
        compClass = "CompCauseGameCondition_PsychicSuppression",
        worldRange = 10,
      },
      CompProperties_MoteEmitter = {
        mote = "Mote_PsychicConditionCauserEffect",
        emissionInterval = 150,
      },
    },
  },

  ["ThingDef:EMIDynamo"] = {
    _ = {
      ParentName = "ConditionCauserBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_ConditionCausers.xml",
      DLC = "Royalty",
    },
    defName = "EMIDynamo",
    label = "EMI dynamo",
    description = [[A massive electromagnetic interference generator. It interferes with or shuts down electrical devices in nearby regions.]],
    size = {6, 4},
    comps = {
      CompProperties_CausesGameCondition = {
        conditionDef = "EMIField",
        worldRange = 10,
      },
      CompProperties_Explosive = {
        explosiveRadius = 9.9,
        explosiveDamageType = "EMP",
        explodeOnKilled = true,
      },
    },
  },

  ["ThingDef:Shuttle"] = {
    _ = {
      Name = "ShuttleBase",
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Exotic.xml",
      DLC = "Royalty",
    },
    defName = "Shuttle",
    label = "shuttle",
    description = [[A spacer-tech shuttle designed for transit between surface and orbit, or between moons of a planetary system.]],
    altitudeLayer = "Building",
    pathCost = 50,
    passability = "Impassable",
    fillPercent = 1.0,
    size = {5, 3},
    statBases = {
      MaxHitPoints = 1000,
      Flammability = 1,
    },
    killedLeavings = {
      Steel = 100,
      Plasteel = 35,
      ChunkSlagSteel = 4,
      ComponentIndustrial = 4,
    },
    terrainAffordanceNeeded = "Light",
    comps = {
      CompProperties_Shuttle = {},
      CompProperties_Launchable = {
        requireFuel = false,
        fixedLaunchDistanceMax = 70,
        skyfallerLeaving = "ShuttleLeaving",
      },
      CompProperties_Transporter = {
        massCapacity = 1000,
        max1PerGroup = true,
        canChangeAssignedThingsAfterStarting = true,
        showOverallStats = false,
        pawnLoadedSound = "Shuttle_PawnLoaded",
        pawnExitSound = "Shuttle_PawnExit",
      },
    },
  },

  ["ThingDef:ShuttleCrashed"] = {
    _ = {
      ParentName = "ShuttleBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Exotic.xml",
      DLC = "Royalty",
    },
    defName = "ShuttleCrashed",
    label = "crashed shuttle",
    statBases = {
      MaxHitPoints = 200,
      Flammability = 1,
    },
    comps = {
      _ = {
        Inherit = false,
      },
    },
    killedLeavings = {
      _ = {
        Inherit = false,
      },
      Steel = 4,
      Plasteel = 7,
      ChunkSlagSteel = 1,
      ComponentIndustrial = 1,
    },
    costList = {
      Steel = 40,
      Plasteel = 70,
      ComponentIndustrial = 10,
    },
    leaveResourcesWhenKilled = true,
    building = {
      _ = {
        Inherit = false,
      },
      alwaysDeconstructible = true,
    },
  },

  ["ThingDef:BroadshieldProjector"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Exotic.xml",
      DLC = "Royalty",
    },
    defName = "BroadshieldProjector",
    label = "burnout low-shield",
    description = [[A man-portable low-angle shield projector. Bullets can go out, but not in. Its compact power source burns out after a few seconds of use.]],
    altitudeLayer = "BuildingOnTop",
    pathCost = 0,
    passability = "Standable",
    fillPercent = 0.35,
    statBases = {
      MaxHitPoints = 250,
      Flammability = 0.5,
    },
    killedLeavings = {},
    terrainAffordanceNeeded = "Light",
    building = {
      isEdifice = false,
    },
    comps = {
      CompProperties_ProjectileInterceptor = {
        radius = 4.9,
        interceptGroundProjectiles = true,
        interceptNonHostileProjectiles = true,
        interceptOutgoingProjectiles = false,
        color = "(0.6, 0.6, 0.8)",
        idlePulseSpeed = 3,
        minIdleAlpha = 0.05,
        disarmedByEmpForTicks = 600,
        activeSound = "Broadshield_Ambience",
      },
      CompProperties_DestroyAfterDelay = {
        delayTicks = 1800,
        destroyMode = "KillFinalize",
        countdownLabel = "Burnout in",
      },
    },
  },

  ["ThingDef:Drape"] = {
    _ = {
      ParentName = "FurnitureBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Royalty",
    },
    defName = "Drape",
    label = "drape",
    description = [[A decorative sheet hanging from a vertical wooden frame. Appropriate for royal rooms.]],
    altitudeLayer = "BuildingOnTop",
    passability = "PassThroughOnly",
    fillPercent = 0.40,
    statBases = {
      MaxHitPoints = 100,
      WorkToBuild = 2000,
      Mass = 15,
      Flammability = 1.0,
      Beauty = 7.5,
    },
    costList = {
      WoodLog = 50,
    },
    pathCost = 14,
    size = {2, 1},
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:Brazier"] = {
    _ = {
      ParentName = "FurnitureBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Royalty",
    },
    defName = "Brazier",
    label = "brazier",
    description = [[A bowl-shaped furnishing used to hold a fire. Will light the surroundings and create heat.]],
    category = "Building",
    fillPercent = 0.15,
    statBases = {
      MaxHitPoints = 80,
      WorkToBuild = 100,
      Flammability = 0,
      Mass = 15,
      MeditationFocusStrength = 0.0,
    },
    minifiedDef = "MinifiedThing",
    comps = {
      CompProperties_Refuelable = {
        fuelConsumptionRate = 2.0,
        fuelCapacity = 30.0,
        fuelConsumptionPerTickInRain = 0.0006,
        fuelFilter = {
          thingDefs = {
            "WoodLog",
          },
        },
        initialFuelPercent = 0,
        showAllowAutoRefuelToggle = true,
      },
      CompProperties_Glower = {
        glowRadius = 10,
        glowColor = {252, 187, 113, 0},
      },
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 3.5,
        heatPushMaxTemperature = 23,
      },
      CompProperties_FireOverlay = {
        fireSize = 1,
        offset = {0, 0, 0.18},
      },
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Flame",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_Lit",
            },
            offset = 0.15,
          },
          {
            _ = {
              Class = "FocusStrengthOffset_BuildingDefsLit",
            },
            defs = {
              "Campfire",
              "TorchLamp",
              "Brazier",
            },
            offsetPerBuilding = 0.02,
            radius = 9.9,
            maxBuildings = 8,
            explanationKey = "MeditationFocusPerFlame",
            explanationKeyAbstract = "MeditationFocusPerFlameAbstract",
          },
        },
      },
    },
    altitudeLayer = "Building",
    passability = "PassThroughOnly",
    pathCost = 42,
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:Throne"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Royalty",
    },
    defName = "Throne",
    label = "meditation throne",
    description = [[A large, ornate chair designed for a dignity-focused psycaster to sit and meditate. Reigning on a throne is a form of meditation that builds up psyfocus. For dignity psycasters, more impressive meditation thrones and thronerooms increase the rate of psyfocus gain.]],
    altitudeLayer = "Building",
    category = "Building",
    hasInteractionCell = true,
    statBases = {
      MaxHitPoints = 150,
      WorkToBuild = 10000,
      Mass = 40,
      Flammability = 1.0,
      Beauty = 4,
      Comfort = 0.75,
      MeditationFocusStrength = 0.15,
    },
    thingClass = "Building_Throne",
    pathCost = 30,
    fillPercent = 0.4,
    building = {
      isSittable = true,
    },
    comps = {
      CompProperties_AssignableToPawn = {
        drawAssignmentOverlay = true,
        compClass = "CompAssignableToPawn_Throne",
      },
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Dignified",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_ThroneSatisfiesRequirements",
            },
            offset = 0.08,
          },
          {
            _ = {
              Class = "FocusStrengthOffset_RoomImpressiveness",
            },
            curve = {
              points = {
                {0, -0.05},
                {30, 0.0},
                {60, 0.04},
                {100, 0.08},
                {170, 0.1},
              },
            },
          },
        },
      },
    },
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:GrandThrone"] = {
    _ = {
      ParentName = "FurnitureWithQualityBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Furniture.xml",
      DLC = "Royalty",
    },
    defName = "GrandThrone",
    label = "grand meditation throne",
    description = [[A massive, ornate chair, designed for a dignity-focused psycaster to sit and meditate. Reigning on a throne is a form of meditation that builds up psyfocus. For dignity psycasters, more impressive meditation thrones and thronerooms increase the rate of psyfocus gain.]],
    altitudeLayer = "Building",
    category = "Building",
    size = {3, 2},
    hasInteractionCell = true,
    statBases = {
      MaxHitPoints = 350,
      WorkToBuild = 40000,
      Mass = 100,
      Flammability = 1.0,
      Beauty = 6,
      Comfort = 0.9,
      MeditationFocusStrength = 0.15,
    },
    thingClass = "Building_Throne",
    costList = {
      Gold = 75,
    },
    pathCost = 30,
    fillPercent = 0.4,
    building = {
      isSittable = true,
      buildingSizeCategory = "Medium",
    },
    comps = {
      CompProperties_AssignableToPawn = {
        drawAssignmentOverlay = true,
        compClass = "CompAssignableToPawn_Throne",
      },
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Dignified",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_ThroneSatisfiesRequirements",
            },
            offset = 0.08,
          },
          {
            _ = {
              Class = "FocusStrengthOffset_RoomImpressiveness",
            },
            curve = {
              points = {
                {0, -0.05},
                {30, 0.00},
                {60, 0.04},
                {100, 0.08},
                {170, 0.10},
              },
            },
          },
        },
      },
    },
    researchPrerequisites = {
      "ComplexFurniture",
    },
  },

  ["ThingDef:MechBuildingBase"] = {
    _ = {
      ParentName = "BuildingBase",
      Name = "MechBuildingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech.xml",
      DLC = "Royalty",
    },
    altitudeLayer = "Building",
    pathCost = 50,
    passability = "PassThroughOnly",
    fillPercent = 1.0,
    terrainAffordanceNeeded = "Light",
    building = {
      buildingTags = {
        "MechClusterMember",
      },
    },
    statBases = {
      Flammability = 0,
      Beauty = -20,
    },
  },

  ["ThingDef:UnstablePowerCell"] = {
    _ = {
      ParentName = "MechBuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech.xml",
      DLC = "Royalty",
    },
    defName = "UnstablePowerCell",
    label = "unstable power cell",
    description = [[A mechanoid power generation unit. The vanometric power core will run forever, extracting energy from quantum foam fluctuations.\n\nAn internal amplifier system makes it unstable. If damaged, the unit will generate a massive explosion.\n\nSome brave humans steal these from mechanoids for their own use as power plants or defensive bombs. However, an unintentional detonation can be devastating.]],
    size = {1, 1},
    passability = "PassThroughOnly",
    fillPercent = 0.35,
    pathCost = 42,
    statBases = {
      MaxHitPoints = 200,
      Flammability = 0,
      Mass = 15,
      MarketValue = 400,
      WorkToBuild = 300,
    },
    building = {
      buildingTags = {
        "MechClusterMemberGood",
      },
    },
    thingCategories = {
      "BuildingsSpecial",
    },
    minifiedDef = "MinifiedThing",
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerPlant",
        basePowerConsumption = -400,
        transmitsPower = true,
      },
      CompProperties_Glower = {
        glowRadius = 4,
        glowColor = {115, 200, 23, 0},
      },
      CompProperties_Explosive = {
        wickTicks = 240,
        explosiveRadius = 9.9,
        explosiveDamageType = "Bomb",
        explodeOnKilled = true,
        startWickHitPointsPercent = 0.5,
        extraInspectStringKey = "ExplosionOnDamageWarning",
      },
    },
    costList = {
      ComponentIndustrial = 2,
    },
  },

  ["ThingDef:Gloomlight"] = {
    _ = {
      ParentName = "MechBuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech.xml",
      DLC = "Royalty",
    },
    defName = "Gloomlight",
    label = "gloomlight",
    description = [[A self-powered mechanoid light. Gloomlights can be deconstructed to yield valuable resources, or used as lights - but only if they are captured intact. The internal micro power cell will flame out and ruin the materials if the unit takes too much damage.]],
    size = {1, 1},
    passability = "PassThroughOnly",
    pathCost = 30,
    statBases = {
      MaxHitPoints = 50,
      Mass = 9,
      MarketValue = 200,
      WorkToBuild = 300,
    },
    building = {
      buildingTags = {
        "MechClusterMemberLamp",
      },
    },
    thingCategories = {
      "BuildingsSpecial",
    },
    minifiedDef = "MinifiedThing",
    comps = {
      CompProperties_Glower = {
        glowRadius = 3,
        glowColor = {216, 219, 67, 0},
      },
    },
    leaveResourcesWhenKilled = false,
    costList = {
      Plasteel = 22,
      ComponentIndustrial = 1,
    },
  },

  ["ThingDef:Defoliator"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech.xml",
      DLC = "Royalty",
    },
    defName = "Defoliator",
    label = "defoliator",
    description = [[An area-denial device which annihilates nearby plants without affecting animals.\n\nIn planetary wars, these weapons are scattered across farmlands or jungles to deny the enemy food or cover. They're usually associated with orbital-drop mechanoid swarms.]],
    size = {3, 3},
    pathCost = 50,
    passability = "PassThroughOnly",
    fillPercent = 0.5,
    leaveResourcesWhenKilled = false,
    killedLeavings = {
      ChunkSlagSteel = 4,
      Steel = 60,
      ComponentIndustrial = 1,
      Plasteel = 10,
    },
    terrainAffordanceNeeded = "Light",
    building = {
      buildingTags = {
        "MechClusterMember",
        "MechClusterProblemCauser",
      },
    },
    statBases = {
      MaxHitPoints = 400,
      Flammability = 0,
      Beauty = -200,
    },
    comps = {
      CompProperties_PlantHarmRadius = {
        radiusPerDayCurve = {
          points = {
            "0  , 5",
            "1.5, 18",
            "6  , 40",
            "20 , 100",
          },
        },
      },
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
      CompProperties_Initiatable = {},
      CompProperties_Explosive = {
        wickTicks = 240,
        explosiveRadius = 9,
        explosiveDamageType = "EMP",
        explodeOnKilled = true,
      },
    },
  },

  ["ThingDef:ActivatorCountdown"] = {
    _ = {
      ParentName = "MechBuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Activators.xml",
      DLC = "Royalty",
    },
    defName = "ActivatorCountdown",
    label = "count-down activator",
    description = [[A timed mechanoid activation unit. After counting down, it will wake nearby dormant mechanoids and structures.]],
    size = {1, 1},
    fillPercent = 0.25,
    pathCost = 30,
    statBases = {
      MaxHitPoints = 100,
      Flammability = 0,
      WorkToBuild = 300,
    },
    building = {
      buildingTags = {
        "MechClusterActivator",
      },
    },
    comps = {
      CompProperties_SendSignalOnCountdown = {
        signalTag = "CompCanBeDormant.WakeUp",
        countdownCurveTicks = {
          points = {
            {599, 0},
            {600, 1},
            {600000, 0.1},
            {1200000, 0},
          },
        },
      },
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
      CompProperties_MoteEmitter = {
        mote = "Mote_ActivatorCountdownFlash",
        emissionInterval = 100,
        soundOnEmission = "ActivatorCountdown_Ambience",
        saveKeysPrefix = "flash",
      },
      CompProperties_MoteEmitter = {
        mote = "Mote_ActivatorCountdownGlow",
        maintain = true,
        saveKeysPrefix = "glow",
      },
      CompProperties_Glower = {
        glowRadius = 2,
        glowColor = {55, 145, 10, 0},
      },
    },
    costList = {
      Plasteel = 7,
    },
  },

  ["ThingDef:ActivatorProximity"] = {
    _ = {
      ParentName = "MechBuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Activators.xml",
      DLC = "Royalty",
    },
    defName = "ActivatorProximity",
    label = "proximity activator",
    description = [[A proximity alarm for dormant mechanoids. If it detects a human-like threat nearby, it will awaken any nearby dormant mechanoids or structures.]],
    size = {1, 1},
    fillPercent = 0.25,
    pathCost = 30,
    statBases = {
      MaxHitPoints = 100,
      Flammability = 0,
      WorkToBuild = 300,
    },
    building = {
      buildingTags = {
        "MechClusterActivator",
      },
    },
    comps = {
      CompProperties_SendSignalOnPawnProximity = {
        onlyHumanlike = true,
        radius = 12.9,
        enableAfterTicks = 1200,
        signalTag = "CompCanBeDormant.WakeUp",
      },
      CompProperties_MoteEmitterProximityScan = {
        mote = "Mote_ProximityScannerRadius",
        emissionInterval = 90,
        maintain = true,
        soundEmitting = "ActivatorProximity_Ambience",
        saveKeysPrefix = "scan",
        warmupPulseFadeInTime = 0.12,
        warmupPulseSolidTime = 0.15,
        warmupPulseFadeOutTime = 0.6,
      },
      CompProperties_MoteEmitter = {
        mote = "Mote_ActivatorProximityGlow",
        maintain = true,
        saveKeysPrefix = "glow",
      },
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
      CompProperties_Glower = {
        glowRadius = 2,
        glowColor = {115, 35, 20, 0},
      },
    },
    costList = {
      Plasteel = 7,
    },
  },

  ["ThingDef:ShieldGeneratorMortar"] = {
    _ = {
      ParentName = "MechBuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_ShieldGenerators.xml",
      DLC = "Royalty",
    },
    defName = "ShieldGeneratorMortar",
    label = "mech high-shield",
    description = [[A shielding device which projects a momentum repulsor field. Shots can go out, but not in.\n\nThis one is tuned to high angles, so it will block mortar rounds.\n\nThe unit can be temporarily disabled by EMP attacks, either by shocking the projector unit itself, or using EMP munitions on the shield.]],
    size = {1, 1},
    statBases = {
      MaxHitPoints = 200,
      Flammability = 0,
      MarketValue = 1000,
      WorkToBuild = 300,
    },
    comps = {
      CompProperties_ProjectileInterceptor = {
        radius = 25,
        interceptAirProjectiles = true,
        color = "(0.6, 0.6, 0.6)",
        reactivateEffect = "MortarShieldGenerator_Reactivate",
        activeSound = "MortarShield_Ambience",
        disarmedByEmpForTicks = 1080,
        chargeIntervalTicks = 600000,
        chargeDurationTicks = 60000,
      },
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
    },
    costList = {
      Plasteel = 7,
      BroadshieldCore = 1,
    },
    leaveResourcesWhenKilled = false,
    killedLeavings = {
      Plasteel = 7,
    },
  },

  ["ThingDef:ShieldGeneratorBullets"] = {
    _ = {
      ParentName = "MechBuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_ShieldGenerators.xml",
      DLC = "Royalty",
    },
    defName = "ShieldGeneratorBullets",
    label = "mech low-shield",
    description = [[A shielding device which projects a momentum repulsor field. Shots can go out, but not in.\n\nThis one is tuned to low angles, so it will block ground-level projectiles like bullets.\n\nThe unit can be temporarily disabled by EMP attacks, either by shocking the projector unit itself, or using EMP munitions on the shield.]],
    size = {1, 1},
    statBases = {
      MaxHitPoints = 200,
      Flammability = 0,
      MarketValue = 1000,
      WorkToBuild = 300,
    },
    comps = {
      CompProperties_ProjectileInterceptor = {
        radius = 20,
        interceptGroundProjectiles = true,
        color = "(0.4, 0.4, 0.4)",
        reactivateEffect = "BulletShieldGenerator_Reactivate",
        activeSound = "BulletShield_Ambience",
        disarmedByEmpForTicks = 1080,
        chargeIntervalTicks = 600000,
        chargeDurationTicks = 60000,
      },
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
    },
    costList = {
      Plasteel = 7,
      BroadshieldCore = 1,
    },
    leaveResourcesWhenKilled = false,
    killedLeavings = {
      Plasteel = 7,
    },
  },

  ["ThingDef:MechCapsule"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Spawners.xml",
      DLC = "Royalty",
    },
    defName = "MechCapsule",
    label = "mech capsule",
    description = [[A mechanoid storage and deployment capsule. It can contain a number of mechanoids, ready to emerge and fight upon being awakened.]],
    altitudeLayer = "Building",
    pathCost = 50,
    passability = "PassThroughOnly",
    fillPercent = 1.0,
    terrainAffordanceNeeded = "Light",
    size = {2, 3},
    statBases = {
      MaxHitPoints = 180,
      Flammability = 0,
      Beauty = -20,
      WorkToBuild = 500,
    },
    building = {
      combatPower = 400,
      buildingTags = {
        "MechClusterMember",
        "MechClusterCombatThreat",
      },
    },
    costList = {
      ComponentIndustrial = 3,
      Plasteel = 20,
    },
    killedLeavings = {
      ChunkSlagSteel = 1,
    },
    comps = {
      CompProperties_CanBeDormant = {
        awakeStateLabelKey = "OpenedDaysAgo",
        dormantStateLabelKey = "DormantCompSealed",
      },
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
      CompProperties_PawnSpawnOnWakeup = {
        points = 410,
        spawnablePawnKinds = {
          "Mech_Scyther",
          "Mech_Lancer",
          "Mech_Centipede",
          "Mech_Pikeman",
        },
        spawnSound = "CryptosleepCasket_Eject",
        lordJob = "LordJob_MechanoidsDefend",
        shouldJoinParentLord = true,
      },
      CompProperties_EmptyStateGraphic = {
        graphicData = {
          texPath = "Things/Building/Mech/MechCapsuleOpen",
          graphicClass = "Graphic_Single",
          drawSize = {2, 3},
        },
      },
    },
  },

  ["ThingDef:MechAssembler"] = {
    _ = {
      ParentName = "MechBuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Spawners.xml",
      DLC = "Royalty",
    },
    defName = "MechAssembler",
    label = "mech assembler",
    description = [[An automated mechanoid factory. It periodically assembles and deploys new mechanoids.]],
    size = {3, 3},
    statBases = {
      MaxHitPoints = 260,
      Flammability = 0,
      WorkToBuild = 500,
    },
    building = {
      combatPower = 250,
      buildingTags = {
        "MechClusterCombatThreat",
      },
    },
    costList = {
      ComponentIndustrial = 3,
      Plasteel = 20,
    },
    killedLeavings = {
      ChunkSlagSteel = 1,
    },
    comps = {
      CompProperties_CanBeDormant = {},
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
      CompProperties_SpawnerPawn = {
        spawnablePawnKinds = {
          "Mech_Scyther",
          "Mech_Lancer",
          "Mech_Centipede",
          "Mech_Pikeman",
        },
        chooseSingleTypeToSpawn = true,
        spawnMessageKey = "MessageMechanoidsAssembled",
        pawnsLeftToSpawnKey = "MessageMechanoidsLeftToAssemble",
        noPawnsLeftToSpawnKey = "ShutDown",
        nextSpawnInspectStringKey = "MechAssemblyCompleteIn",
        nextSpawnInspectStringKeyDormant = "MechAssemblyNextType",
        maxPawnsToSpawn = 4,
        spawnSound = "MechAssembler_Spawn",
        showNextSpawnInInspect = true,
        lordJob = "LordJob_MechanoidsDefend",
        pawnSpawnIntervalDays = 1,
        shouldJoinParentLord = true,
      },
    },
  },

  ["ThingDef:MechDropBeacon"] = {
    _ = {
      ParentName = "MechBuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Spawners.xml",
      DLC = "Royalty",
    },
    defName = "MechDropBeacon",
    label = "mech drop beacon",
    description = [[A mechanoid reinforcement drop beacon. When activated, it calls in a group of mechs to land in drop pods nearby.]],
    size = {1, 1},
    pathCost = 30,
    fillPercent = 0.25,
    statBases = {
      MaxHitPoints = 100,
      Flammability = 0,
    },
    building = {
      combatPower = 400,
      buildingTags = {
        "MechClusterCombatThreat",
      },
    },
    comps = {
      CompProperties_CanBeDormant = {
        awakeStateLabelKey = "DormantCompExpired",
        dormantStateLabelKey = "DormantCompBeacon",
      },
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
      CompProperties_PawnSpawnOnWakeup = {
        points = { ["<"]=350, [">"]=450 },
        dropInPods = true,
        pawnSpawnRadius = { ["<"]=10, [">"]=30 },
        spawnEffecter = "MechDropBeaconActivated",
        activatedMessageKey = "MessageMechanoidsReinforcementsDrop",
        spawnablePawnKinds = {
          "Mech_Scyther",
          "Mech_Lancer",
          "Mech_Centipede",
          "Mech_Pikeman",
        },
        lordJob = "LordJob_MechanoidsDefend",
        shouldJoinParentLord = true,
      },
    },
    costList = {
      Plasteel = 7,
    },
  },

  ["ThingDef:Turret_AutoMiniTurret"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Turrets.xml",
      DLC = "Royalty",
    },
    defName = "Turret_AutoMiniTurret",
    label = "mini-slugger turret",
    description = [[A self-powered defense turret mounted with a weak but long-ranged slug-thrower. May explode when damaged.]],
    thingClass = "Building_TurretGun",
    altitudeLayer = "Building",
    statBases = {
      MaxHitPoints = 100,
      Flammability = 0,
      Mass = 10,
      ShootingAccuracyTurret = 0.96,
      Beauty = -20,
    },
    comps = {
      CompProperties_Explosive = {
        wickTicks = 240,
        explosiveRadius = 3.9,
        explosiveDamageType = "Bomb",
        chanceNeverExplodeFromDamage = 0.5,
      },
      CompProperties_CanBeDormant = {},
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
    },
    killedLeavings = {
      ChunkSlagSteel = 1,
    },
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 0.4,
    terrainAffordanceNeeded = "Light",
    building = {
      combatPower = 45,
      buildingTags = {
        "MechClusterMember",
        "MechClusterCombatThreat",
      },
      turretGunDef = "Gun_MiniTurretMech",
      turretBurstCooldownTime = 2.5,
    },
  },

  ["ThingDef:Gun_MiniTurretMech"] = {
    _ = {
      ParentName = "BaseWeaponTurret",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Turrets.xml",
      DLC = "Royalty",
    },
    defName = "Gun_MiniTurretMech",
    label = "mini-slugger",
    description = [[An automatic turret-mounted slug-thrower.]],
    statBases = {
      AccuracyTouch = 0.80,
      AccuracyShort = 0.55,
      AccuracyMedium = 0.35,
      AccuracyLong = 0.1,
      RangedWeapon_Cooldown = 5.1,
      DeteriorationRate = 0,
      Mass = 5,
      Flammability = 0,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_MiniSlug",
        range = 45.9,
        burstShotCount = 1,
      },
    },
  },

  ["ThingDef:Bullet_MiniSlug"] = {
    _ = {
      ParentName = "BaseBullet",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Turrets.xml",
      DLC = "Royalty",
    },
    defName = "Bullet_MiniSlug",
    label = "mini-slug",
  },

  ["ThingDef:Turret_AutoChargeBlaster"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Turrets.xml",
      DLC = "Royalty",
    },
    defName = "Turret_AutoChargeBlaster",
    label = "auto charge turret",
    description = [[A self-powered turret mounted with a charge blaster. It cannot sense targets at very short ranges.]],
    thingClass = "Building_TurretGun",
    altitudeLayer = "Building",
    size = {2, 2},
    statBases = {
      MaxHitPoints = 180,
      Flammability = 0,
      Mass = 100,
      ShootingAccuracyTurret = 0.96,
      Beauty = -20,
    },
    comps = {
      CompProperties_Explosive = {
        wickTicks = 240,
        explosiveRadius = 5.9,
        explosiveDamageType = "Bomb",
        chanceNeverExplodeFromDamage = 0.5,
      },
      CompProperties_CanBeDormant = {},
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
    },
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 0.5,
    killedLeavings = {
      ChunkSlagSteel = 1,
    },
    terrainAffordanceNeeded = "Heavy",
    building = {
      combatPower = 150,
      buildingTags = {
        "MechClusterMember",
        "MechClusterCombatThreat",
      },
      turretGunDef = "Gun_ChargeBlasterHeavyTurret",
      turretBurstCooldownTime = 5.5,
    },
  },

  ["ThingDef:Gun_ChargeBlasterHeavyTurret"] = {
    _ = {
      ParentName = "Gun_ChargeBlasterHeavyBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Turrets.xml",
      DLC = "Royalty",
    },
    defName = "Gun_ChargeBlasterHeavyTurret",
    label = "light charge blaster",
    description = [[A pulse-charged rapid-fire blaster for area fire.]],
    statBases = {
      AccuracyLong = 0.08,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_ChargeBlasterHeavy",
        warmupTime = 1.25,
        minRange = 3.9,
        range = 45.9,
        ticksBetweenBurstShots = 7,
        burstShotCount = 9,
      },
    },
  },

  ["ThingDef:Turret_AutoInferno"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Turrets.xml",
      DLC = "Royalty",
    },
    defName = "Turret_AutoInferno",
    label = "auto inferno turret",
    description = [[A self-powered turret mounted with an inferno cannon. It cannot sense targets at very short ranges.]],
    thingClass = "Building_TurretGun",
    altitudeLayer = "Building",
    size = {2, 2},
    statBases = {
      MaxHitPoints = 180,
      Flammability = 0,
      Mass = 100,
      ShootingAccuracyTurret = 0.96,
      Beauty = -20,
    },
    comps = {
      CompProperties_Explosive = {
        wickTicks = 240,
        explosiveRadius = 5.9,
        explosiveDamageType = "Bomb",
        chanceNeverExplodeFromDamage = 0.5,
      },
      CompProperties_CanBeDormant = {},
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
    },
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 0.5,
    killedLeavings = {
      ChunkSlagSteel = 1,
    },
    terrainAffordanceNeeded = "Heavy",
    building = {
      buildingTags = {
        "MechClusterMember",
        "MechClusterCombatThreat",
      },
      combatPower = 190,
      turretGunDef = "Gun_InfernoCannonTurret",
      turretBurstCooldownTime = 17.0,
    },
  },

  ["ThingDef:Gun_InfernoCannonTurret"] = {
    _ = {
      ParentName = "Gun_InfernoCannonBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Turrets.xml",
      DLC = "Royalty",
    },
    defName = "Gun_InfernoCannonTurret",
    statBases = {
      AccuracyLong = 0.66,
    },
    verbs = {
      {
        defaultProjectile = "Bullet_InfernoCannon",
        forcedMissRadius = 4.6,
        warmupTime = 1.25,
        minRange = 3.9,
        range = 45.9,
        burstShotCount = 1,
      },
    },
  },

  ["ThingDef:Turret_AutoMortar"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Turrets.xml",
      DLC = "Royalty",
    },
    defName = "Turret_AutoMortar",
    label = "auto mortar",
    description = [[A self-powered, self-loading, automatic mortar. It can hit targets at any distance, over walls, but is quite inaccurate.]],
    thingClass = "Building_TurretGun",
    altitudeLayer = "Building",
    size = {2, 2},
    passability = "PassThroughOnly",
    pathCost = 50,
    fillPercent = 0.4,
    killedLeavings = {
      ChunkSlagSteel = 1,
      Steel = 60,
      Plasteel = 10,
    },
    terrainAffordanceNeeded = "Heavy",
    comps = {
      CompProperties_Forbiddable = {},
      CompProperties_Explosive = {
        wickTicks = 240,
        explosiveRadius = 4.9,
        explosiveDamageType = "Bomb",
      },
      CompProperties_Initiatable = {},
      CompProperties_WakeUpDormant = {
        wakeUpSound = "MechanoidsWakeUp",
      },
    },
    statBases = {
      MaxHitPoints = 260,
      Flammability = 0,
      Mass = 30,
      ShootingAccuracyTurret = 0.9,
      Beauty = -20,
    },
    building = {
      buildingTags = {
        "MechClusterMember",
        "MechClusterProblemCauser",
      },
      combatPower = 220,
      turretGunDef = "Artillery_AutoMortar",
      turretBurstWarmupTime = 4.0,
      turretBurstCooldownTime = 80.0,
      turretInitialCooldownTime = 120,
    },
  },

  ["ThingDef:Artillery_AutoMortar"] = {
    _ = {
      ParentName = "BaseArtilleryWeapon",
      DefCategory = "ThingDef",
      FileName = "Buildings_Mech_Turrets.xml",
      DLC = "Royalty",
    },
    defName = "Artillery_AutoMortar",
    label = "auto-mortar",
    weaponTags = {
      "Artillery_BaseDestroyer",
    },
    verbs = {
      {
        defaultProjectile = "Bullet_Shell_HighExplosive",
        forcedMissRadius = 13,
        warmupTime = 4,
        minRange = 29.9,
        range = 500,
        burstShotCount = 1,
        requireLineOfSight = false,
        targetParams = {
          canTargetLocations = true,
        },
      },
    },
  },

  ["ThingDef:ShipLandingBeacon"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Royalty",
    },
    defName = "ShipLandingBeacon",
    label = "ship landing beacon",
    description = [[Marks the corner of a landing area. Four of these placed at the corners of a clear area (minimum 9x9) create a landing pad. Spacecraft usually land on pads if possible.]],
    altitudeLayer = "Building",
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsMisc",
    },
    statBases = {
      MaxHitPoints = 75,
      WorkToBuild = 800,
      Flammability = 0.5,
      Mass = 5,
    },
    fillPercent = 0.15,
    costList = {
      Steel = 40,
      ComponentIndustrial = 1,
    },
    comps = {
      CompProperties_Power = {
        compClass = "CompPowerTrader",
        basePowerConsumption = 50,
      },
      CompProperties_Glower = {
        glowRadius = 2,
        glowColor = "(164, 255, 138, 0)",
      },
      CompProperties_ShipLandingBeacon = {
        edgeLengthRange = { ["<"]=9, [">"]=25 },
      },
      CompProperties_Flickable = {},
      CompProperties_Breakdownable = {},
    },
    leaveResourcesWhenKilled = false,
    pathCost = 14,
    researchPrerequisites = {
      "Electricity",
    },
  },

  ["ThingDef:MeditationSpot"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Royalty",
    },
    defName = "MeditationSpot",
    label = "meditation spot",
    description = [[Designates a spot for meditation. Psycasters can meditate here to gain psyfocus. If a focus object like a sculpture is nearby, the psycaster will be able to focus on it to boost their psyfocus gain. However, different people are able to use different focus objects.]],
    altitudeLayer = "FloorEmplacement",
    statBases = {
      WorkToBuild = 0,
    },
    useHitPoints = false,
    passability = "Standable",
    building = {
      sowTag = "SupportPlantsOnly",
      artificialForMeditationPurposes = false,
    },
    comps = {
      CompProperties_UsesMeditationFocus = {},
      CompProperties_AssignableToPawn = {
        drawUnownedAssignmentOverlay = false,
        compClass = "CompAssignableToPawn_MeditationSpot",
      },
    },
  },

  ["ThingDef:NatureShrineBase"] = {
    _ = {
      Name = "NatureShrineBase",
      ParentName = "BuildingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Royalty",
    },
    altitudeLayer = "Building",
    useHitPoints = true,
    passability = "PassThroughOnly",
    thingCategories = {
      "BuildingsMisc",
    },
    statBases = {
      Flammability = 1.0,
    },
    building = {
      artificialForMeditationPurposes = false,
    },
    minifiedDef = "MinifiedThing",
  },

  ["ThingDef:NatureShrine_Small"] = {
    _ = {
      ParentName = "NatureShrineBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Royalty",
    },
    defName = "NatureShrine_Small",
    label = "small nature shrine",
    description = [[A small shrine for honoring spiritual beings. Tribal psycasters can focus on this shrine while meditating to increase psyfocus gain. Nature shrines lose their power if they are close to artificial structures, so they are always built in nature. Since they look like natural objects to unobservant outsiders, raiders will generally ignore them.]],
    size = {2, 2},
    terrainAffordanceNeeded = "Medium",
    comps = {
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Natural",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_ArtificialBuildings",
            },
            radius = 34.9,
            curve = {
              points = {
                {0, 0.0},
                {5, -0.06},
                {10, -0.12},
                {50, -0.22},
              },
            },
          },
          {
            _ = {
              Class = "FocusStrengthOffset_BuildingDefs",
            },
            defs = {
              AnimusStone = 0.02,
            },
            radius = 9.9,
            maxBuildings = 4,
            explanationKey = "MeditationFocusPerAnimusStone",
            explanationKeyAbstract = "MeditationFocusPerAnimusStoneAbstract",
          },
        },
      },
    },
    statBases = {
      MaxHitPoints = 150,
      WorkToBuild = 15000,
      Beauty = 10,
      MeditationFocusStrength = 0.22,
      Mass = 25,
    },
  },

  ["ThingDef:NatureShrine_Large"] = {
    _ = {
      ParentName = "NatureShrineBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Royalty",
    },
    defName = "NatureShrine_Large",
    label = "large nature shrine",
    description = [[A large shrine for honoring spiritual beings. Tribal psycasters can focus on this shrine while meditating to increase psyfocus gain. Nature shrines lose their power if they are close to artificial structures, so they are always built in nature. Since they look like natural objects to unobservant outsiders, raiders will generally ignore them.]],
    size = {3, 3},
    terrainAffordanceNeeded = "Heavy",
    comps = {
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Natural",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_ArtificialBuildings",
            },
            radius = 34.9,
            curve = {
              points = {
                {0, 0.0},
                {5, -0.06},
                {10, -0.13},
                {50, -0.30},
              },
            },
          },
          {
            _ = {
              Class = "FocusStrengthOffset_BuildingDefs",
            },
            defs = {
              AnimusStone = 0.02,
            },
            radius = 9.9,
            maxBuildings = 4,
            explanationKey = "MeditationFocusPerAnimusStone",
            explanationKeyAbstract = "MeditationFocusPerAnimusStoneAbstract",
          },
        },
      },
    },
    statBases = {
      MaxHitPoints = 300,
      WorkToBuild = 30000,
      MeditationFocusStrength = 0.30,
      Beauty = 20,
      Mass = 50,
    },
  },

  ["ThingDef:AnimusStone"] = {
    _ = {
      ParentName = "BuildingBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_Misc.xml",
      DLC = "Royalty",
    },
    defName = "AnimusStone",
    label = "animus stone",
    description = [[An ancient jade stone marked with sacred tribal carvings. Tribal psycasters can focus on these stones during meditation to increase their psyfocus gain more than a typical nature shrine.\n\nDifferent tribal cultures tell different stories about these stones, but most agree that they were crafted by an ancient world spirit during a time of great power. Since they look like natural objects to unobservant outsiders, raiders will generally ignore them.]],
    altitudeLayer = "Building",
    minifiedDef = "MinifiedThing",
    thingCategories = {
      "BuildingsMisc",
    },
    fillPercent = 0.35,
    tradeability = "Buyable",
    statBases = {
      MarketValue = 5000,
      MaxHitPoints = 100,
      Mass = 5,
      MeditationFocusStrength = 0.34,
    },
    building = {
      artificialForMeditationPurposes = false,
    },
    comps = {
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Natural",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_ArtificialBuildings",
            },
            radius = 34.9,
            curve = {
              points = {
                {0, 0.0},
                {5, -0.08},
                {10, -0.16},
                {50, -0.34},
              },
            },
          },
          {
            _ = {
              Class = "FocusStrengthOffset_BuildingDefs",
            },
            defs = {
              AnimusStone = 0.02,
            },
            radius = 9.9,
            maxBuildings = 4,
            explanationKey = "MeditationFocusPerAnimusStone",
            explanationKeyAbstract = "MeditationFocusPerAnimusStoneAbstract",
          },
        },
      },
    },
  },

  ["ThingDef:UnfinishedMusicalInstrument"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_MusicalInstruments.xml",
      DLC = "Royalty",
    },
    defName = "UnfinishedMusicalInstrument",
    label = "unfinished musical instrument",
    description = [[An unfinished musical instrument.]],
  },

  ["ThingDef:MusicalInstrumentBase"] = {
    _ = {
      Name = "MusicalInstrumentBase",
      ParentName = "BuildingBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Buildings_MusicalInstruments.xml",
      DLC = "Royalty",
    },
    passability = "PassThroughOnly",
    pathCost = 50,
    minifiedDef = "MinifiedThing",
    altitudeLayer = "Building",
    thingClass = "Building_MusicalInstrument",
    hasInteractionCell = true,
    thingCategories = {
      "BuildingsJoy",
    },
    tradeTags = {
      "MusicalInstrument",
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Sculpt",
      unfinishedThingDef = "UnfinishedMusicalInstrument",
    },
    building = {
      joyKind = "HighCulture",
    },
    comps = {
      {
        compClass = "CompQuality",
      },
      {
        compClass = "CompGatherSpot",
      },
      CompProperties_ThrownMoteEmitter = {
        mote = "Mote_Music",
        offsetMin = {-0.6, 0, 0.3},
        offsetMax = {0.6, 0, 0.5},
        emissionInterval = 100,
        scale = { ["<"]=0.6, [">"]=0.9 },
        rotationRate = { ["<"]=-15, [">"]=15 },
        velocityX = { ["<"]=0.3, [">"]=0.7 },
        velocityY = { ["<"]=0.7, [">"]=1.0 },
      },
    },
  },

  ["ThingDef:Harp"] = {
    _ = {
      ParentName = "MusicalInstrumentBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_MusicalInstruments.xml",
      DLC = "Royalty",
    },
    defName = "Harp",
    label = "harp",
    description = [[A simple stationary musical instrument. A row of strings are stretched over a frame and plucked directly by a musician's fingers.\n\nIt can be crafted at a crafting spot or smithy.]],
    size = {1, 1},
    pathCost = 30,
    researchPrerequisites = {
      "Harp",
    },
    statBases = {
      MaxHitPoints = 70,
      WorkToMake = 18000,
      Mass = 4,
      JoyGainFactor = 1,
      Beauty = 10,
    },
    recipeMaker = {
      skillRequirements = {
        Crafting = 3,
      },
      researchPrerequisite = "Harp",
      recipeUsers = {
        "CraftingSpot",
        "FueledSmithy",
        "ElectricSmithy",
      },
    },
    costList = {
      WoodLog = 150,
    },
  },

  ["ThingDef:Harpsichord"] = {
    _ = {
      ParentName = "MusicalInstrumentBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_MusicalInstruments.xml",
      DLC = "Royalty",
    },
    defName = "Harpsichord",
    label = "harpsichord",
    description = [[A complex stationary musical instrument crafted at a smithy. A musician touches a row of keys on the front of the instrument. Each key is attached to an internal mechanism which plucks one of a row of strings stretched over a wooden frame. While it permits more complex composition than the harp, its wooden construction and plucking mechanism limit its output volume and expressiveness.]],
    size = {2, 3},
    researchPrerequisites = {
      "Harpsichord",
    },
    statBases = {
      MaxHitPoints = 150,
      WorkToMake = 32000,
      Mass = 30,
      JoyGainFactor = 1,
      Beauty = 14,
    },
    recipeMaker = {
      skillRequirements = {
        Crafting = 5,
      },
      researchPrerequisite = "Harpsichord",
      recipeUsers = {
        "FueledSmithy",
        "ElectricSmithy",
      },
    },
    costList = {
      WoodLog = 250,
    },
  },

  ["ThingDef:UnfinishedPiano"] = {
    _ = {
      ParentName = "UnfinishedBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_MusicalInstruments.xml",
      DLC = "Royalty",
    },
    defName = "UnfinishedPiano",
    label = "unfinished piano",
    description = [[An unfinished piano.]],
  },

  ["ThingDef:Piano"] = {
    _ = {
      ParentName = "MusicalInstrumentBase",
      DefCategory = "ThingDef",
      FileName = "Buildings_MusicalInstruments.xml",
      DLC = "Royalty",
    },
    defName = "Piano",
    label = "piano",
    description = [[An advanced stationary musical instrument. It is played by pressing a row of keys, which causes hammers to strike internal strings stretched over a steel frame. The hammer mechanism and high-tension strings allow the musician to play both very soft and very loud, making the piano a very expressive instrument.\n\nIt can be crafted at a smithy.]],
    size = {3, 3},
    researchPrerequisites = {
      "Piano",
    },
    statBases = {
      MaxHitPoints = 180,
      WorkToMake = 50000,
      Mass = 60,
      JoyGainFactor = 1,
      Beauty = 18,
    },
    recipeMaker = {
      skillRequirements = {
        Crafting = 6,
      },
      researchPrerequisite = "Piano",
      recipeUsers = {
        "FueledSmithy",
        "ElectricSmithy",
      },
      unfinishedThingDef = "UnfinishedPiano",
    },
    costList = {
      WoodLog = 220,
      Steel = 120,
    },
  },

  ["ThingDef:BroadshieldCore"] = {
    _ = {
      ParentName = "ResourceBase",
      DefCategory = "ThingDef",
      FileName = "Items_Exotic.xml",
      DLC = "Royalty",
    },
    defName = "BroadshieldCore",
    label = "shield core",
    description = [[A piece of ultratechnology that can generate a momentum-repulsor shield. This can't do anything on its own, but it is necessary to craft some other usable shield items.\n\nShield cores can be obtained by deconstructing mechanoid shield generators.]],
    stackLimit = 1,
    useHitPoints = true,
    statBases = {
      MarketValue = 350,
      MaxHitPoints = 100,
      Mass = 2,
      Flammability = 0.2,
    },
    thingCategories = {
      "Items",
    },
    tradeTags = {
      "ExoticMisc",
    },
  },

  ["ThingDef:Apparel_PackJump"] = {
    _ = {
      ParentName = "ApparelBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Packs.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_PackJump",
    label = "jump pack",
    description = [[A single-person burst rocket for short-ranged flight. With its integrated harness and guidance assistant, the jump pack allows anyone to leap long distances at high speed, even over obstacles. It must be recharged after several uses.\n\nSome spacer tech militaries have melee combat specialists who use jump packs to bypass obstacles and rapidly close with the enemy.]],
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 5,
        ammoDef = "Chemfuel",
        ammoCountPerCharge = 20,
        baseReloadTicks = 60,
        soundReload = "Standard_Reload",
        hotKey = "Misc4",
        chargeNoun = "jump",
        displayGizmoWhileUndrafted = false,
      },
    },
    verbs = {
      {
        label = "jump",
        violent = false,
        onlyManualCast = true,
        warmupTime = 0.5,
        requireLineOfSight = true,
        targetParams = {
          canTargetLocations = true,
          canTargetPawns = false,
          canTargetBuildings = false,
        },
      },
    },
    recipeMaker = {
      unfinishedThingDef = "UnfinishedPack",
      researchPrerequisite = "JumpPack",
      recipeUsers = {
        "TableMachining",
      },
      useIngredientsForColor = false,
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Machining",
      skillRequirements = {
        Crafting = 4,
      },
    },
    costList = {
      Plasteel = 30,
      ComponentIndustrial = 3,
      Chemfuel = 100,
    },
    statBases = {
      WorkToMake = 14000,
      Mass = 3,
      Flammability = 0.4,
      EquipDelay = 2,
      JumpRange = 23.9,
    },
    thingCategories = {
      "ApparelUtility",
    },
    apparel = {
      bodyPartGroups = {
        "Waist",
      },
      layers = {
        "Belt",
      },
      tags = {
        "PackJump",
      },
    },
    tradeTags = {
      "ExoticMisc",
    },
  },

  ["ThingDef:Apparel_PackBroadshield"] = {
    _ = {
      ParentName = "ApparelNoQualityBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Packs.xml",
      DLC = "Royalty",
    },
    thingClass = "BroadshieldPack",
    defName = "Apparel_PackBroadshield",
    label = "low-shield pack",
    description = [[A single-use man-portable low-shield projector. Deployed on the ground, it generates a circular shield that allows bullets out but not in. The unit is designed to last only a short time before burning out.\n\nMany ultratech combat squads owe their lives to a shield pack deployed at just the right time.]],
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 1,
        destroyOnEmpty = true,
        soundReload = "Standard_Reload",
        hotKey = "Misc4",
        chargeNoun = "shield",
        displayGizmoWhileUndrafted = false,
      },
    },
    verbs = {
      {
        label = "deploy low-shield",
        violent = false,
        targetable = false,
        nonInterruptingSelfCast = true,
        onlyManualCast = true,
      },
    },
    recipeMaker = {
      unfinishedThingDef = "UnfinishedPack",
      researchPrerequisite = "ShieldBelt",
      recipeUsers = {
        "TableMachining",
      },
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Machining",
      skillRequirements = {
        Crafting = 4,
      },
    },
    costList = {
      BroadshieldCore = 1,
      ComponentIndustrial = 1,
    },
    statBases = {
      WorkToMake = 14000,
      Mass = 3,
      Flammability = 0.4,
      EquipDelay = 2,
    },
    thingCategories = {
      "ApparelUtility",
    },
    apparel = {
      bodyPartGroups = {
        "Waist",
      },
      layers = {
        "Belt",
      },
      tags = {
        "BeltDefensePop",
      },
    },
    tradeTags = {
      "ExoticMisc",
    },
  },

  ["ThingDef:PsychicApparelBase"] = {
    _ = {
      ParentName = "ApparelBase",
      Name = "PsychicApparelBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Psychic.xml",
      DLC = "Royalty",
    },
    tradeTags = {
      "PsychicApparel",
    },
    apparel = {
      tags = {
        "Psychic",
      },
    },
  },

  ["ThingDef:Apparel_PsyfocusHelmet"] = {
    _ = {
      ParentName = "PsychicApparelBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Psychic.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_PsyfocusHelmet",
    label = "eltex helmet",
    description = [[A lightweight helmet designed for psychic focusing. While it provides little physical protection, its special materials enhance the wearer's psychic sensitivity and dissipate neural heat.]],
    thingCategories = {
      "Headgear",
    },
    statBases = {
      MarketValue = 500,
      MaxHitPoints = 80,
      Mass = 0.8,
      ArmorRating_Sharp = 0.09,
      ArmorRating_Blunt = 0.09,
      ArmorRating_Heat = 0.27,
      Insulation_Cold = 4,
      Insulation_Heat = 1,
      EquipDelay = 1.5,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_EltexSkullcap"] = {
    _ = {
      ParentName = "PsychicApparelBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Psychic.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_EltexSkullcap",
    label = "eltex skullcap",
    description = [[A tight skullcap designed for psychic focusing. It provides no physical protection, but its special materials enhance the wearer's psychic sensitivity and dissipate neural heat.]],
    thingCategories = {
      "Headgear",
    },
    statBases = {
      MarketValue = 500,
      MaxHitPoints = 80,
      Mass = 0.8,
      EquipDelay = 1.5,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_PsyfocusShirt"] = {
    _ = {
      ParentName = "PsychicApparelBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Psychic.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_PsyfocusShirt",
    label = "eltex shirt",
    description = [[A shirt embedded with special psychic focusing materials. These enhance psychic sensitivity and help dissipate neural heat.]],
    thingCategories = {
      "Apparel",
    },
    statBases = {
      MarketValue = 400,
      MaxHitPoints = 100,
      Mass = 0.25,
      ArmorRating_Sharp = 0.07,
      ArmorRating_Blunt = 0,
      ArmorRating_Heat = 0.04,
      Insulation_Cold = 5,
      Insulation_Heat = 1,
      EquipDelay = 1.5,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Shoulders",
      },
      layers = {
        "OnSkin",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_PsyfocusVest"] = {
    _ = {
      ParentName = "PsychicApparelBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Psychic.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_PsyfocusVest",
    label = "eltex vest",
    description = [[A thin vest embedded with special psychic focusing materials. These enhance psychic sensitivity and help dissipate neural heat.]],
    thingCategories = {
      "Apparel",
    },
    statBases = {
      MarketValue = 500,
      MaxHitPoints = 100,
      Mass = 0.5,
      ArmorRating_Sharp = 0.07,
      ArmorRating_Blunt = 0,
      ArmorRating_Heat = 0.04,
      Insulation_Cold = 6,
      Insulation_Heat = 1,
      EquipDelay = 2,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
      },
      layers = {
        "Middle",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
  },

  ["ThingDef:Apparel_PsyfocusRobe"] = {
    _ = {
      ParentName = "PsychicApparelBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Psychic.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_PsyfocusRobe",
    description = [[A long robe embedded with special psychic focusing materials. These enhance psychic sensitivity and help dissipate neural heat.]],
    label = "eltex robe",
    thingCategories = {
      "Apparel",
    },
    statBases = {
      MarketValue = 600,
      MaxHitPoints = 100,
      Mass = 0.5,
      ArmorRating_Sharp = 0.07,
      ArmorRating_Blunt = 0,
      ArmorRating_Heat = 0.04,
      Insulation_Cold = 15,
      Insulation_Heat = 1,
      EquipDelay = 2,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
        "Legs",
      },
      layers = {
        "Shell",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
  },

  ["ThingDef:ApparelShirtRoyalTier2Base"] = {
    _ = {
      Name = "ApparelShirtRoyalTier2Base",
      ParentName = "ApparelMakeableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    recipeMaker = {
      researchPrerequisite = "NobleApparel",
    },
    thingCategories = {
      "ApparelNoble",
    },
    statBases = {
      MaxHitPoints = 100,
      WorkToMake = 6000,
      Mass = 0.25,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.22,
      StuffEffectMultiplierInsulation_Heat = 0.10,
      EquipDelay = 1.5,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Shoulders",
      },
      layers = {
        "OnSkin",
      },
      tags = {
        "Royal",
        "RoyalTier2",
      },
    },
  },

  ["ThingDef:Apparel_ShirtRuffle"] = {
    _ = {
      ParentName = "ApparelShirtRoyalTier2Base",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ShirtRuffle",
    label = "formal shirt",
    description = [[A decorated formal shirt with buttons.]],
    apparel = {
      bodyPartGroups = {
        "Arms",
        "Neck",
      },
    },
  },

  ["ThingDef:ApparelVestRoyalTier5Base"] = {
    _ = {
      Name = "ApparelVestRoyalTier5Base",
      ParentName = "ApparelMakeableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    recipeMaker = {
      researchPrerequisite = "NobleApparel",
    },
    statBases = {
      MaxHitPoints = 100,
      WorkToMake = 12000,
      Mass = 0.75,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.4,
      StuffEffectMultiplierInsulation_Heat = 0.10,
    },
    thingCategories = {
      "ApparelNoble",
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
      },
      layers = {
        "Middle",
      },
      tags = {
        "Royal",
        "RoyalTier5",
      },
    },
  },

  ["ThingDef:Apparel_Corset"] = {
    _ = {
      ParentName = "ApparelVestRoyalTier5Base",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_Corset",
    label = "corset",
    description = [[An embroidered corset with strong wire support to maintain a ladylike shape.]],
    statBases = {
      EquipDelay = 5,
    },
  },

  ["ThingDef:Apparel_VestRoyal"] = {
    _ = {
      ParentName = "ApparelVestRoyalTier5Base",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_VestRoyal",
    label = "formal vest",
    description = [[A vest embroidered with complex decorative designs.]],
    statBases = {
      EquipDelay = 1.5,
    },
  },

  ["ThingDef:Apparel_RobeRoyal"] = {
    _ = {
      ParentName = "ApparelMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_RobeRoyal",
    label = "prestige robe",
    description = [[A long, flowing robe embroidered with complex decorative designs.]],
    recipeMaker = {
      researchPrerequisite = "RoyalApparel",
    },
    statBases = {
      MaxHitPoints = 100,
      WorkToMake = 20000,
      Mass = 0.75,
      StuffEffectMultiplierArmor = 0.2,
      StuffEffectMultiplierInsulation_Cold = 0.80,
      StuffEffectMultiplierInsulation_Heat = 0.25,
      EquipDelay = 2,
    },
    thingCategories = {
      "ApparelNoble",
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
        "Legs",
      },
      layers = {
        "Shell",
      },
      tags = {
        "Royal",
        "RoyalTier6",
        "RoyalRobe",
      },
    },
  },

  ["ThingDef:ApparelHatRoyalTier2"] = {
    _ = {
      Name = "ApparelHatRoyalTier2",
      ParentName = "NobleHatMakeableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    statBases = {
      MaxHitPoints = 80,
      WorkToMake = 6000,
      Mass = 0.1,
      EquipDelay = 0.8,
      StuffEffectMultiplierInsulation_Cold = 0.10,
      StuffEffectMultiplierInsulation_Heat = 0.25,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      tags = {
        "Royal",
        "RoyalTier2",
      },
    },
    recipeMaker = {
      researchPrerequisite = "NobleApparel",
    },
  },

  ["ThingDef:Apparel_HatLadies"] = {
    _ = {
      ParentName = "ApparelHatRoyalTier2Fabric",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_HatLadies",
    label = "ladies hat",
    description = [[A decorative traditional hat with complex embroidery.]],
  },

  ["ThingDef:Apparel_HatTop"] = {
    _ = {
      ParentName = "ApparelHatRoyalTier2Fabric",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_HatTop",
    label = "top hat",
    description = [[A tall, stiff, shiny hat.]],
  },

  ["ThingDef:Apparel_HatHood"] = {
    _ = {
      ParentName = "ApparelHatRoyalTier2Fabric",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    recipeMaker = {
      _ = {
        IsNull = true,
        Inherit = false,
      },
    },
    defName = "Apparel_HatHood",
    label = "hood",
    description = [[A draped hood which covers the head and ears.]],
    statBases = {
      WorkToMake = 1200,
    },
    apparel = {
      tags = {
        _ = {
          Inherit = false,
        },
        "BestowerHood",
      },
    },
  },

  ["ThingDef:Apparel_Coronet"] = {
    _ = {
      ParentName = "ApparelBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_Coronet",
    label = "coronet",
    description = [[A small crown-like piece of headwear made of metal.]],
    smeltable = true,
    thingCategories = {
      "HeadgearNoble",
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Smith",
      recipeUsers = {
        "ElectricSmithy",
        "FueledSmithy",
      },
      defaultIngredientFilter = {
        categories = {
          "Root",
        },
        disallowedThingDefs = {
          "Jade",
          "Uranium",
        },
      },
      researchPrerequisite = "RoyalApparel",
    },
    statBases = {
      MaxHitPoints = 80,
      WorkToMake = 8000,
      Mass = 0.7,
      EquipDelay = 0.8,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      tags = {
        "Royal",
        "RoyalTier5",
      },
    },
  },

  ["ThingDef:Apparel_Crown"] = {
    _ = {
      ParentName = "ApparelBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_Crown",
    label = "crown",
    description = [[A crown of metal with an elaborate design.]],
    smeltable = true,
    thingCategories = {
      "HeadgearNoble",
    },
    recipeMaker = {
      workSpeedStat = "GeneralLaborSpeed",
      workSkill = "Crafting",
      effectWorking = "Smith",
      soundWorking = "Recipe_Smith",
      recipeUsers = {
        "ElectricSmithy",
        "FueledSmithy",
      },
      defaultIngredientFilter = {
        categories = {
          "Root",
        },
        disallowedThingDefs = {
          "Jade",
          "Uranium",
        },
      },
      researchPrerequisite = "RoyalApparel",
    },
    statBases = {
      MaxHitPoints = 80,
      WorkToMake = 12000,
      Mass = 0.9,
      EquipDelay = 0.8,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      tags = {
        "Royal",
        "RoyalTier6",
      },
    },
  },

  ["ThingDef:Apparel_CrownStellic"] = {
    _ = {
      ParentName = "ApparelBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_CrownStellic",
    label = "stellic crown",
    description = [[A grand crown of metal with an elaborate, overbearing design.]],
    smeltable = true,
    thingCategories = {
      "HeadgearNoble",
    },
    statBases = {
      MaxHitPoints = 80,
      Mass = 0.9,
      EquipDelay = 0.8,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      tags = {
        "Royal",
        "RoyalTier7",
      },
    },
  },

  ["ThingDef:Apparel_Cape"] = {
    _ = {
      ParentName = "ApparelMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_Cape",
    label = "cape",
    description = [[A long cape of elegant design. It hangs over one side of the torso.]],
    recipeMaker = {
      researchPrerequisite = "NobleApparel",
    },
    thingCategories = {
      "ApparelNoble",
    },
    statBases = {
      MaxHitPoints = 200,
      WorkToMake = 16000,
      Mass = 2,
      StuffEffectMultiplierArmor = 0.3,
      StuffEffectMultiplierInsulation_Cold = 0.60,
      StuffEffectMultiplierInsulation_Heat = 0.85,
      EquipDelay = 3,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
        "Legs",
      },
      layers = {
        "Shell",
      },
      tags = {
        "Cape",
        "Royal",
        "RoyalTier2",
        "RoyalTier5",
      },
    },
  },

  ["ThingDef:Apparel_Beret"] = {
    _ = {
      ParentName = "ApparelMakeableBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Royal.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_Beret",
    label = "beret",
    description = [[A soft, round, flat-crowned hat.]],
    thingCategories = {
      "HeadgearNoble",
    },
    statBases = {
      MaxHitPoints = 80,
      WorkToMake = 4000,
      Mass = 0.1,
      EquipDelay = 0.8,
      StuffEffectMultiplierInsulation_Cold = 0.07,
      StuffEffectMultiplierInsulation_Heat = 0.15,
    },
    apparel = {
      bodyPartGroups = {
        "UpperHead",
      },
      layers = {
        "Overhead",
      },
      tags = {
        "Royal",
        "RoyalTier2",
        "RoyalTier3",
      },
    },
    recipeMaker = {
      researchPrerequisite = "NobleApparel",
    },
  },

  ["ThingDef:Apparel_ArmorReconPrestige"] = {
    _ = {
      ParentName = "ApparelArmorReconBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ArmorReconPrestige",
    label = "prestige recon armor",
    description = [[A suit of light partially-powered armor, designed to permit quick movement. Plasteel-weave plates block attacks without compromising mobility, and neuro-memetic assistors in the lower body allow a human to wear the armor and still move easily.\n\nExpensive and beautiful, prestige armor like this is usually made for those of high status. Embedded eltex threads also enhance the wearer's psychic sensitivity.]],
    statBases = {
      WorkToMake = 90000,
    },
    costList = {
      Gold = 9,
      Plasteel = 100,
    },
    apparel = {
      tags = {
        "PrestigeCombatGear",
      },
    },
  },

  ["ThingDef:Apparel_ArmorHelmetReconPrestige"] = {
    _ = {
      ParentName = "ApparelArmorHelmetReconBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ArmorHelmetReconPrestige",
    label = "prestige recon helmet",
    description = [[A high-tech armored helmet with a built-in status computer and a protective plasteel-weave plate.\n\nExpensive and beautiful, prestige armor like this is usually made for those of high status. Embedded eltex threads also enhance the wearer's psychic sensitivity.]],
    statBases = {
      WorkToMake = 31500,
    },
    costList = {
      Gold = 4,
      Plasteel = 40,
    },
    apparel = {
      tags = {
        "PrestigeCombatGear",
      },
    },
  },

  ["ThingDef:Apparel_ArmorMarinePrestige"] = {
    _ = {
      ParentName = "ApparelArmorPowerBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ArmorMarinePrestige",
    label = "prestige marine armor",
    description = [[A suit of powered armor. Layered plasteel-weave plates are very effective at stopping attacks, with few vulnerable joint sections. Neuro-memetic assistors allow a human to wear the armor and still move easily.\n\nExpensive and beautiful, prestige armor like this is usually made for those of high status. Embedded eltex threads also enhance the wearer's psychic sensitivity.]],
    statBases = {
      WorkToMake = 120000,
    },
    costList = {
      Gold = 10,
      Plasteel = 120,
    },
    apparel = {
      tags = {
        "PrestigeCombatGear",
      },
    },
  },

  ["ThingDef:Apparel_ArmorMarineHelmetPrestige"] = {
    _ = {
      ParentName = "ApparelArmorHelmetPowerBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ArmorMarineHelmetPrestige",
    label = "prestige marine helmet",
    description = [[A marine armor helmet, with a built-in status computer and layered plasteel-weave plates.\n\nExpensive and beautiful, prestige armor like this is usually made for those of high status. Embedded eltex threads also enhance the wearer's psychic sensitivity.]],
    statBases = {
      WorkToMake = 42000,
    },
    costList = {
      Gold = 5,
      Plasteel = 50,
    },
    apparel = {
      tags = {
        "PrestigeCombatGear",
      },
    },
  },

  ["ThingDef:ApparelArmorCataphractBase"] = {
    _ = {
      Name = "ApparelArmorCataphractBase",
      ParentName = "ArmorMachineableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    recipeMaker = {
      unfinishedThingDef = "UnfinishedTechArmor",
      researchPrerequisite = "CataphractArmor",
      skillRequirements = {
        Crafting = 8,
      },
      recipeUsers = {
        _ = {
          Inherit = false,
        },
        "FabricationBench",
      },
    },
    statBases = {
      WorkToMake = 75000,
      MaxHitPoints = 400,
      Mass = 15,
      Flammability = 0.4,
      ArmorRating_Sharp = 1.2,
      ArmorRating_Blunt = 0.5,
      ArmorRating_Heat = 0.6,
      Insulation_Cold = 36,
      Insulation_Heat = 12,
      EquipDelay = 17,
    },
    tradeTags = {
      "HiTechArmor",
    },
    thingCategories = {
      "ApparelArmor",
    },
    costList = {
      ComponentSpacer = 6,
      Plasteel = 150,
      Uranium = 50,
    },
    apparel = {
      bodyPartGroups = {
        "Torso",
        "Neck",
        "Shoulders",
        "Arms",
        "Legs",
      },
      layers = {
        "Middle",
        "Shell",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
    comps = {
      CompProperties_BiocodableApparel = {},
    },
  },

  ["ThingDef:ApparelArmorHelmetCataphractBase"] = {
    _ = {
      Name = "ApparelArmorHelmetCataphractBase",
      ParentName = "ArmorHelmetMakeableBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    recipeMaker = {
      unfinishedThingDef = "UnfinishedTechArmor",
      researchPrerequisite = "CataphractArmor",
      skillRequirements = {
        Crafting = 8,
      },
      recipeUsers = {
        _ = {
          Inherit = false,
        },
        "FabricationBench",
      },
    },
    tradeTags = {
      "HiTechArmor",
    },
    statBases = {
      WorkToMake = 26250,
      MaxHitPoints = 180,
      Mass = 2,
      Flammability = 0.4,
      ArmorRating_Sharp = 1.2,
      ArmorRating_Blunt = 0.5,
      ArmorRating_Heat = 0.6,
      Insulation_Cold = 4,
      Insulation_Heat = 2,
      EquipDelay = 6,
    },
    costList = {
      ComponentSpacer = 1,
      Plasteel = 50,
    },
    apparel = {
      bodyPartGroups = {
        "FullHead",
      },
      layers = {
        "Overhead",
      },
      defaultOutfitTags = {
        "Soldier",
      },
    },
    comps = {
      CompProperties_BiocodableApparel = {},
    },
  },

  ["ThingDef:Apparel_ArmorCataphract"] = {
    _ = {
      ParentName = "ApparelArmorCataphractBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ArmorCataphract",
    label = "cataphract armor",
    description = [[A suit of heavy powered armor, built for maximum protection at the cost of mobility. Heavy layered plasteel-weave plates with solid ablative coatings stop all but the most well-aimed or powerful attacks. Neuro-memetic assistors prevent the suit's massive weight from immobilizing the wearer entirely, but the suit is still quite cumbersome.\n\nArmor like this is used by imperial cataphracts to break heavily fortified positions in frontal assaults when no other option is available.]],
  },

  ["ThingDef:Apparel_ArmorHelmetCataphract"] = {
    _ = {
      ParentName = "ApparelArmorHelmetCataphractBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ArmorHelmetCataphract",
    label = "cataphract helmet",
    description = [[A heavily-armored high-tech helmet, with a solid plasteel-weave shell and indirect visual system for non-frontal view angles. It protects against all but the most powerful or luckily-aimed shots.\n\nArmor like this is used by imperial cataphracts to break heavily fortified positions in frontal assaults when no other option is available.]],
  },

  ["ThingDef:Apparel_ArmorCataphractPrestige"] = {
    _ = {
      ParentName = "ApparelArmorCataphractBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ArmorCataphractPrestige",
    label = "prestige cataphract armor",
    description = [[A suit of heavy powered armor, built for maximum protection at the cost of mobility. Heavy layered plasteel-weave plates with solid ablative coatings stop all but the most well-aimed or powerful attacks. Neuro-memetic assistors prevent the suit's massive weight from immobilizing the wearer entirely, but the suit is still quite cumbersome.\n\nExpensive and beautiful, prestige armor like this is usually made for those of high status. Embedded eltex threads also enhance the wearer's psychic sensitivity.]],
    statBases = {
      WorkToMake = 150000,
    },
    costList = {
      Gold = 18,
      Plasteel = 190,
    },
    apparel = {
      tags = {
        "PrestigeCombatGear",
      },
    },
  },

  ["ThingDef:Apparel_ArmorHelmetCataphractPrestige"] = {
    _ = {
      ParentName = "ApparelArmorHelmetCataphractBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ArmorHelmetCataphractPrestige",
    label = "prestige cataphract helmet",
    description = [[A heavily-armored high-tech helmet, with a solid plasteel-weave shell and indirect visual system for non-frontal view angles. It protects against all but the most powerful or luckily-aimed shots.\n\nExpensive and beautiful, prestige armor like this is usually made for those of high status. Embedded eltex threads also enhance the wearer's psychic sensitivity.]],
    statBases = {
      WorkToMake = 52500,
    },
    costList = {
      Gold = 9,
      Plasteel = 75,
    },
    apparel = {
      tags = {
        "PrestigeCombatGear",
      },
    },
  },

  ["ThingDef:Apparel_ArmorLocust"] = {
    _ = {
      ParentName = "ApparelArmorReconBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ArmorLocust",
    label = "locust armor",
    description = [[A variant of recon armor with an integrated burst rocket for short-ranged flight. Locust armor is slightly less protective than standard recon armor. Each jump consumes a burst of fuel, so the armor must be reloaded after several uses.\n\nUnlike most ultratech military units, locusts train primarily with melee weapons. They usually avoid static shootouts, preferring to jump straight into enemy fortifications and fight hand-to-hand. They do poorly in static defense or confined quarters, but excel in mixed cover or shipcracking operations.]],
    statBases = {
      ArmorRating_Sharp = 0.87,
      ArmorRating_Blunt = 0.35,
      ArmorRating_Heat = 0.41,
      JumpRange = 23.9,
    },
    recipeMaker = {
      researchPrerequisites = {
        "JumpPack",
        "ReconArmor",
      },
    },
    costList = {
      Plasteel = 120,
      ComponentIndustrial = 3,
      Chemfuel = 100,
    },
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 5,
        ammoDef = "Chemfuel",
        ammoCountPerCharge = 20,
        baseReloadTicks = 60,
        soundReload = "Standard_Reload",
        hotKey = "Misc4",
        chargeNoun = "jump",
        displayGizmoWhileUndrafted = false,
      },
    },
    verbs = {
      {
        label = "jump",
        violent = false,
        onlyManualCast = true,
        warmupTime = 0.5,
        requireLineOfSight = true,
        targetParams = {
          canTargetLocations = true,
          canTargetPawns = false,
          canTargetBuildings = false,
        },
      },
    },
  },

  ["ThingDef:Apparel_ArmorMarineGrenadier"] = {
    _ = {
      ParentName = "ApparelArmorPowerBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ArmorMarineGrenadier",
    label = "grenadier armor",
    description = [[A variant of marine armor with an integrated frag launcher on the shoulder. The armor is slightly less protective than standard marine armor. The launcher can only hold a limited amount of ammo and must be reloaded after use.\n\nGrenadiers usually specialize in breaching buildings or internal ship bulkheads. While not effective at very long range, grenadiers can be surprisingly deadly in confined quarters.]],
    costList = {
      Steel = 75,
      ComponentIndustrial = 4,
    },
    statBases = {
      ArmorRating_Sharp = 1.01,
      ArmorRating_Blunt = 0.40,
      ArmorRating_Heat = 0.49,
    },
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 2,
        ammoDef = "Steel",
        ammoCountPerCharge = 25,
        baseReloadTicks = 60,
        soundReload = "Standard_Reload",
        hotKey = "Misc4",
        chargeNoun = "grenade",
        displayGizmoWhileUndrafted = false,
      },
    },
    verbs = {
      {
        label = "launch frag grenade",
        onlyManualCast = true,
        range = 12.9,
        forcedMissRadius = 1.9,
        warmupTime = 1.5,
        noiseRadius = 4,
        targetParams = {
          canTargetLocations = true,
        },
        defaultProjectile = "Proj_GrenadierGrenade",
      },
    },
  },

  ["ThingDef:Proj_GrenadierGrenade"] = {
    _ = {
      ParentName = "BaseFragGrenadeProjectile",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Proj_GrenadierGrenade",
    label = "frag grenade",
  },

  ["ThingDef:Apparel_ArmorCataphractPhoenix"] = {
    _ = {
      ParentName = "ApparelArmorCataphractBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_ArmorCataphractPhoenix",
    label = "phoenix armor",
    description = [[A variant of cataphract armor with a shoulder-mounted flamebolt launcher. This armor is slightly less protective than standard cataphract armor against normal damage, but is especially flame-resistant. The flamebolt launcher has very limited ammo and must be reloaded after use.\n\nPhoenixes specialize in clearing out very confined spaces full of enemies, as in underground or shipborne operations. They can absorb hits while moving down a corridor, fill rooms with flame, and emerge from the smoke unscathed.]],
    statBases = {
      Flammability = 0.1,
      ArmorRating_Sharp = 1.15,
      ArmorRating_Blunt = 0.45,
      ArmorRating_Heat = 0.75,
      Insulation_Heat = 100,
    },
    costList = {
      Steel = 75,
      ComponentIndustrial = 4,
      Chemfuel = 40,
    },
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 1,
        ammoDef = "Chemfuel",
        ammoCountPerCharge = 40,
        baseReloadTicks = 60,
        soundReload = "Standard_Reload",
        hotKey = "Misc4",
        chargeNoun = "incendiary",
        displayGizmoWhileUndrafted = false,
      },
    },
    verbs = {
      {
        label = "launch incendiary",
        onlyManualCast = true,
        range = 14.9,
        forcedMissRadius = 1.9,
        warmupTime = 1.5,
        noiseRadius = 4,
        targetParams = {
          canTargetLocations = true,
        },
        defaultProjectile = "Proj_GrenadePhoenixFire",
      },
    },
  },

  ["ThingDef:Proj_GrenadePhoenixFire"] = {
    _ = {
      ParentName = "BaseIncendiaryProjectile",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Proj_GrenadePhoenixFire",
    label = "incendiary grenade",
  },

  ["ThingDef:Apparel_Gunlink"] = {
    _ = {
      ParentName = "ApparelArmorHelmetReconBase",
      DefCategory = "ThingDef",
      FileName = "Apparel_Various.xml",
      DLC = "Royalty",
    },
    defName = "Apparel_Gunlink",
    label = "gunlink",
    description = [[A targeting computer that helps the user aim. It detects and analyzes targets using infrared, visible, and millimeter-wave electromagnetic sensors. An onboard targeting computer displays firing solutions on a retinal projection. It offers no protection at all.]],
    statBases = {
      ArmorRating_Sharp = 0,
      ArmorRating_Blunt = 0,
      ArmorRating_Heat = 0,
      Insulation_Cold = 0,
      Insulation_Heat = 0,
    },
    recipeMaker = {
      researchPrerequisite = "Gunlink",
    },
    costList = {
      ComponentSpacer = 1,
      Plasteel = 10,
    },
    apparel = {
      bodyPartGroups = {
        _ = {
          Inherit = false,
        },
        "UpperHead",
      },
      tags = {
        _ = {
          Inherit = false,
        },
        "Gunlink",
      },
    },
  },

  ["ThingDef:ShuttleSkyfallerBase"] = {
    _ = {
      Name = "ShuttleSkyfallerBase",
      ParentName = "SkyfallerBase",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "Ethereal_Skyfallers.xml",
      DLC = "Royalty",
    },
    size = {5, 3},
  },

  ["ThingDef:ShuttleIncoming"] = {
    _ = {
      ParentName = "ShuttleSkyfallerBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Skyfallers.xml",
      DLC = "Royalty",
    },
    defName = "ShuttleIncoming",
    label = "shuttle (incoming)",
    thingClass = "ShuttleIncoming",
  },

  ["ThingDef:ShuttleLeaving"] = {
    _ = {
      ParentName = "ShuttleSkyfallerBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Skyfallers.xml",
      DLC = "Royalty",
    },
    defName = "ShuttleLeaving",
    label = "shuttle (leaving)",
    thingClass = "DropPodLeaving",
  },

  ["ThingDef:ShuttleCrashing"] = {
    _ = {
      ParentName = "ShuttleSkyfallerBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Skyfallers.xml",
      DLC = "Royalty",
    },
    defName = "ShuttleCrashing",
    label = "shuttle (crashing)",
    thingClass = "ShuttleIncoming",
    size = {5, 3},
  },

  ["ThingDef:MonumentMarker"] = {
    _ = {
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Royalty",
    },
    defName = "MonumentMarker",
    label = "monument marker",
    description = [[Marks the place where you intend to build a monument. Once placed, this cannot be moved.]],
    thingClass = "MonumentMarker",
    thingCategories = {
      "BuildingsSpecial",
    },
    altitudeLayer = "Building",
    statBases = {
      Mass = 0,
    },
    minifiedDef = "MinifiedThing",
  },

  ["ThingDef:BulletShieldPsychic"] = {
    _ = {
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Royalty",
    },
    defName = "BulletShieldPsychic",
    label = "skipshield",
    thingClass = "ThingWithComps",
    comps = {
      CompProperties_ProjectileInterceptor = {
        radius = 4.9,
        interceptGroundProjectiles = true,
        interceptNonHostileProjectiles = true,
        interceptOutgoingProjectiles = true,
        color = "(0.4, 0.4, 0.4)",
        minAlpha = 0.2,
        interceptEffect = "Interceptor_BlockedProjectilePsychic",
      },
      CompProperties_DestroyAfterDelay = {
        delayTicks = 900,
      },
    },
  },

  ["ThingDef:Flashstorm"] = {
    _ = {
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Royalty",
    },
    defName = "Flashstorm",
    label = "flashstorm",
    thingClass = "ThingWithComps",
    altitudeLayer = "MoteLow",
    comps = {
      CompProperties_DestroyAfterDelay = {
        delayTicks = 10000,
      },
      CompProperties_FadesInOut = {
        fadeInSecs = 2.0,
        fadeOutSecs = 2.0,
        solidTimeSecs = 160,
      },
    },
  },

  ["ThingDef:SolarPinhole"] = {
    _ = {
      ParentName = "EtherealThingBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Royalty",
    },
    defName = "SolarPinhole",
    label = "solar pinhole",
    thingClass = "ThingWithComps",
    category = "PsychicEmitter",
    altitudeLayer = "MoteOverheadLow",
    comps = {
      CompProperties_Glower = {
        glowRadius = 15,
        glowColor = {217, 217, 208, 0},
      },
      CompProperties_HeatPusher = {
        compClass = "CompHeatPusherPowered",
        heatPerSecond = 10,
        heatPushMaxTemperature = 20,
      },
      CompProperties_DestroyAfterDelay = {
        delayTicks = 300000,
      },
    },
  },

  ["ThingDef:PawnJumper"] = {
    _ = {
      ParentName = "PawnFlyerBase",
      DefCategory = "ThingDef",
      FileName = "Ethereal_Various.xml",
      DLC = "Royalty",
    },
    defName = "PawnJumper",
    thingClass = "PawnJumper",
  },

  ["ThingDef:BaseWeapon_Bladelink"] = {
    _ = {
      Name = "BaseWeapon_Bladelink",
      ParentName = "BaseWeapon",
      Abstract = true,
      DefCategory = "ThingDef",
      FileName = "MeleeBladelink.xml",
      DLC = "Royalty",
    },
    weaponTags = {
      "Bladelink",
    },
    comps = {
      {
        compClass = "CompQuality",
      },
      CompProperties_BladelinkWeapon = {},
      CompProperties_GeneratedName = {
        nameMaker = "NamerWeaponBladelink",
      },
    },
    smeltable = true,
    thingCategories = {
      "WeaponsMeleeBladelink",
    },
  },

  ["ThingDef:MeleeWeapon_MonoSwordBladelink"] = {
    _ = {
      ParentName = "BaseWeapon_Bladelink",
      DefCategory = "ThingDef",
      FileName = "MeleeBladelink.xml",
      DLC = "Royalty",
    },
    defName = "MeleeWeapon_MonoSwordBladelink",
    label = "persona monosword",
    description = [[A crystal-metallic longsword infused with mechanites that maintain a mono-molecular cutting edge. It cuts through even thick armor with ease, while its light weight and onboard persona permit extremely fast attacks.
\nThis weapon has an onboard persona that can bond to only a single person. The wielder and intelligent weapon can synchronize their reflexes and attack with frightening speed, accuracy, and creativity. Once bonded to a wielder, the weapon's persona will refuse to be wielded by anyone else.]],
    statBases = {
      MarketValue = 3000,
      Mass = 2,
    },
    tools = {
      {
        label = "handle",
        capacities = {
          "Blunt",
        },
        power = 12,
        cooldownTime = 1.6,
      },
      {
        label = "point",
        capacities = {
          "Stab",
        },
        power = 27,
        cooldownTime = 1.6,
      },
      {
        label = "edge",
        capacities = {
          "Cut",
        },
        power = 27,
        cooldownTime = 1.6,
      },
    },
  },

  ["ThingDef:MeleeWeapon_ZeusHammerBladelink"] = {
    _ = {
      ParentName = "BaseWeapon_Bladelink",
      DefCategory = "ThingDef",
      FileName = "MeleeBladelink.xml",
      DLC = "Royalty",
    },
    defName = "MeleeWeapon_ZeusHammerBladelink",
    label = "persona zeushammer",
    description = [[A warhammer with an embedded EMP capacitor. Upon impact, it blasts the target with an EMP burst in addition to the physical damage.
\nThis weapon has an onboard persona that can bond to only a single person. The wielder and intelligent weapon can synchronize their reflexes and attack with frightening speed, accuracy, and creativity. Once bonded to a wielder, the weapon's persona will refuse to be wielded by anyone else.]],
    statBases = {
      MarketValue = 3000,
      Mass = 2,
    },
    tools = {
      {
        label = "handle",
        capacities = {
          "Poke",
        },
        power = 15,
        cooldownTime = 1.6,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 31,
        cooldownTime = 2.2,
        extraMeleeDamages = {
          {
            def = "EMP",
            amount = 9,
          },
        },
      },
    },
  },

  ["ThingDef:MeleeWeapon_PlasmaSwordBladelink"] = {
    _ = {
      ParentName = "BaseWeapon_Bladelink",
      DefCategory = "ThingDef",
      FileName = "MeleeBladelink.xml",
      DLC = "Royalty",
    },
    defName = "MeleeWeapon_PlasmaSwordBladelink",
    label = "persona plasmasword",
    description = [[A metal-cored sword with a cutting edge. Plasma is wrapped around the core, held in place by an energy field. Targets are both sliced by the metal core, as well as burned or ignited by the plasma sheath.
\nThis weapon has an onboard persona that can bond to only a single person. The wielder and intelligent weapon can synchronize their reflexes and attack with frightening speed, accuracy, and creativity. Once bonded to a wielder, the weapon's persona will refuse to be wielded by anyone else.]],
    statBases = {
      MarketValue = 3000,
      Mass = 2,
    },
    tools = {
      {
        label = "handle",
        capacities = {
          "Blunt",
        },
        power = 12,
        cooldownTime = 1.6,
      },
      {
        label = "point",
        capacities = {
          "Stab",
        },
        power = 23,
        cooldownTime = 2,
        extraMeleeDamages = {
          {
            def = "Flame",
            amount = 10,
            chance = 0.7,
          },
        },
      },
      {
        label = "edge",
        capacities = {
          "Cut",
        },
        power = 23,
        cooldownTime = 2,
        extraMeleeDamages = {
          {
            def = "Flame",
            amount = 10,
            chance = 0.7,
          },
        },
      },
    },
  },

  ["ThingDef:MeleeWeapon_Axe"] = {
    _ = {
      ParentName = "BaseMeleeWeapon_Blunt_Quality",
      DefCategory = "ThingDef",
      FileName = "MeleeMedieval.xml",
      DLC = "Royalty",
    },
    defName = "MeleeWeapon_Axe",
    label = "axe",
    description = [[An advanced form of one of mankind's oldest weapons, the war axe is a short blade attached to a shaft. The simple, ancient design concentrates cutting power generated from strong overhand swings.]],
    statBases = {
      WorkToMake = 7000,
      Mass = 1.5,
    },
    recipeMaker = {
      researchPrerequisite = "Smithing",
      skillRequirements = {
        Crafting = 3,
      },
    },
    weaponTags = {
      "MedievalMeleeDecent",
    },
    tools = {
      {
        label = "handle",
        capacities = {
          "Poke",
        },
        power = 9,
        cooldownTime = 2,
      },
      {
        label = "edge",
        capacities = {
          "Cut",
        },
        power = 15,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:MeleeWeapon_Warhammer"] = {
    _ = {
      ParentName = "BaseMeleeWeapon_Blunt_Quality",
      DefCategory = "ThingDef",
      FileName = "MeleeMedieval.xml",
      DLC = "Royalty",
    },
    defName = "MeleeWeapon_Warhammer",
    label = "warhammer",
    description = [[A long polearm topped with a brutal hammer. The powerful blunt impacts can pulverize an enemy's insides, even through armor.]],
    statBases = {
      WorkToMake = 18000,
      Mass = 5,
    },
    recipeMaker = {
      researchPrerequisite = "LongBlades",
      skillRequirements = {
        Crafting = 5,
      },
    },
    weaponTags = {
      "MedievalMeleeDecent",
    },
    tools = {
      {
        label = "handle",
        capacities = {
          "Poke",
        },
        power = 11,
        cooldownTime = 2.6,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 20,
        cooldownTime = 2.6,
      },
    },
  },

  ["ThingDef:MeleeWeaponUltratech"] = {
    _ = {
      Abstract = true,
      Name = "MeleeWeaponUltratech",
      ParentName = "BaseWeapon",
      DefCategory = "ThingDef",
      FileName = "MeleeUltratech.xml",
      DLC = "Royalty",
    },
    statBases = {
      MarketValue = 2000,
      Mass = 2,
    },
    comps = {
      {
        compClass = "CompQuality",
      },
      CompProperties_Art = {
        nameMaker = "NamerArtWeaponMelee",
        descriptionMaker = "ArtDescription_WeaponMelee",
        minQualityForArtistic = "Excellent",
      },
      CompProperties_BiocodableWeapon = {},
    },
    smeltable = true,
    thingCategories = {
      "WeaponsMelee",
    },
    weaponTags = {
      "UltratechMelee",
    },
  },

  ["ThingDef:MeleeWeapon_MonoSword"] = {
    _ = {
      ParentName = "MeleeWeaponUltratech",
      DefCategory = "ThingDef",
      FileName = "MeleeUltratech.xml",
      DLC = "Royalty",
    },
    defName = "MeleeWeapon_MonoSword",
    label = "monosword",
    description = [[A crystal-metallic longsword infused with mechanites that maintain a mono-molecular cutting edge. It cuts through even thick armor with ease, and its light weight permits fast attacks.]],
    tools = {
      {
        label = "handle",
        capacities = {
          "Blunt",
        },
        power = 12,
        cooldownTime = 1.6,
      },
      {
        label = "point",
        capacities = {
          "Stab",
        },
        power = 25,
        cooldownTime = 2,
      },
      {
        label = "edge",
        capacities = {
          "Cut",
        },
        power = 25,
        cooldownTime = 2,
      },
    },
  },

  ["ThingDef:MeleeWeapon_Zeushammer"] = {
    _ = {
      ParentName = "MeleeWeaponUltratech",
      DefCategory = "ThingDef",
      FileName = "MeleeUltratech.xml",
      DLC = "Royalty",
    },
    defName = "MeleeWeapon_Zeushammer",
    label = "zeushammer",
    description = [[A warhammer with an embedded EMP capacitor. Upon impact, it blasts the target with an EMP burst in addition to the physical damage.]],
    tools = {
      {
        label = "handle",
        capacities = {
          "Poke",
        },
        power = 15,
        cooldownTime = 2,
      },
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 31,
        cooldownTime = 3,
        extraMeleeDamages = {
          {
            def = "EMP",
            amount = 9,
          },
        },
      },
    },
  },

  ["ThingDef:MeleeWeapon_PlasmaSword"] = {
    _ = {
      ParentName = "MeleeWeaponUltratech",
      DefCategory = "ThingDef",
      FileName = "MeleeUltratech.xml",
      DLC = "Royalty",
    },
    defName = "MeleeWeapon_PlasmaSword",
    label = "plasmasword",
    description = [[A metal-cored sword with a cutting edge. Plasma is wrapped around the core, held in place by an energy field. Targets are both sliced by the metal core, as well as burned or ignited by the plasma sheath.]],
    tools = {
      {
        label = "handle",
        capacities = {
          "Blunt",
        },
        power = 12,
        cooldownTime = 2,
      },
      {
        label = "point",
        capacities = {
          "Stab",
        },
        power = 21,
        cooldownTime = 2.6,
        extraMeleeDamages = {
          {
            def = "Flame",
            amount = 10,
            chance = 0.5,
          },
        },
      },
      {
        label = "edge",
        capacities = {
          "Cut",
        },
        power = 21,
        cooldownTime = 2.6,
        extraMeleeDamages = {
          {
            def = "Flame",
            amount = 10,
            chance = 0.5,
          },
        },
      },
    },
  },

  ["ThingDef:OrbitalTargeterMechCluster"] = {
    _ = {
      ParentName = "OrbitalUtilityBase",
      DefCategory = "ThingDef",
      FileName = "OrbitalWeapons.xml",
      DLC = "Royalty",
    },
    defName = "OrbitalTargeterMechCluster",
    label = "orbital mech cluster targeter",
    description = [[An ancient military targeting device. It signals an orbital platform to drop a mechanoid combat cluster at the targeted point. The cluster may include any mixture of mechanoids and mech defense structures.
\nThough they may have once had some allegiance to the ancient army that created this unit, any mechs dropped now will indiscriminately attack any human they see - including the one that summoned them.
\nThe unit only contains one usage code, so it can only be used once.]],
    verbs = {
      {
        warmupTime = 3,
        range = 44.9,
        burstShotCount = 1,
        onlyManualCast = true,
        targetParams = {
          canTargetLocations = true,
        },
      },
    },
    comps = {
      CompProperties_Reloadable = {
        maxCharges = 1,
        destroyOnEmpty = true,
        hotKey = "Misc4",
        chargeNoun = "charge",
        displayGizmoWhileUndrafted = false,
      },
    },
  },

  ["ThingDef:BasePsychicWeaponMelee"] = {
    _ = {
      Name = "BasePsychicWeaponMelee",
      Abstract = true,
      ParentName = "BaseWeapon",
      DefCategory = "ThingDef",
      FileName = "PsychicWeapons.xml",
      DLC = "Royalty",
    },
    comps = {
      {
        compClass = "CompQuality",
      },
      CompProperties_BiocodableWeapon = {},
    },
    thingCategories = {
      "WeaponsMelee",
    },
  },

  ["ThingDef:MeleeWeapon_PsyfocusStaff"] = {
    _ = {
      ParentName = "BasePsychicWeaponMelee",
      DefCategory = "ThingDef",
      FileName = "PsychicWeapons.xml",
      DLC = "Royalty",
    },
    defName = "MeleeWeapon_PsyfocusStaff",
    label = "eltex staff",
    description = [[An ultratech staff threaded with psychic focusing materials. While it is a solid melee weapon, its main purpose is to enhance the wielder's psychic sensitivity and neural heat dissipation, allowing more use of psychic powers.]],
    tradeTags = {
      "PsychicWeapon",
    },
    weaponTags = {
      "EltexStaff",
    },
    statBases = {
      MarketValue = 2000,
      Mass = 1.2,
    },
    tools = {
      {
        label = "head",
        capacities = {
          "Blunt",
        },
        power = 12,
        cooldownTime = 2.6,
      },
    },
  },

  ["ThingDef:Plant_TreeAnima"] = {
    _ = {
      ParentName = "TreeBase",
      Name = "TreeAnima",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild.xml",
      DLC = "Royalty",
    },
    defName = "Plant_TreeAnima",
    label = "anima tree",
    description = [[A rare tree with warm, skin-smooth bark and long iridescent leaves. Infused with bioluminescent micro-organisms, anima trees develop a unique form of psychic symbiosis with surrounding lifeforms, allowing them to grow in a wide variety of biomes.\n\nIf a person (psycaster or not) meditates near an anima tree, it will grow anima grass around its base. Once enough grass is grown, it becomes possible to carry out a psychic linking ritual with the tree and upgrade a person's psychic powers. Only tribal peoples know the secret of this ritual. Tribal psycasters are also able to draw psyfocus from anima trees while meditating to them.\n\nAnima trees' psychic properties are weakened if artificial structures are placed nearby. They refuse to be caged or studied, and must remain part of nature.\n\nMost tribes believe that anima trees are not simply trees, but are rather the physical extremities of a single world spirit.]],
    statBases = {
      Beauty = 5,
      MeditationFocusStrength = 0.28,
      Flammability = 0,
      MaxHitPoints = 400,
    },
    plant = {
      growDays = 25,
      sowMinSkill = 0,
      sowTags = {
        _ = {
          Inherit = false,
        },
      },
      dieIfNoSunlight = false,
      dieFromToxicFallout = false,
      lifespanDaysPerGrowDays = 0,
      fertilityMin = 0.02,
      fertilitySensitivity = 0,
      sowResearchPrerequisites = {
        _ = {
          Inherit = false,
        },
      },
    },
    comps = {
      CompProperties_MeditationFocus = {
        statDef = "MeditationFocusStrength",
        focusTypes = {
          "Natural",
        },
        offsets = {
          {
            _ = {
              Class = "FocusStrengthOffset_ArtificialBuildings",
            },
            radius = 34.9,
            curve = {
              points = {
                {0, 0.0},
                {5, -0.08},
                {10, -0.15},
                {50, -0.3},
              },
            },
          },
          {
            _ = {
              Class = "FocusStrengthOffset_BuildingDefs",
            },
            defs = {
              AnimusStone = 0.02,
              NatureShrine_Small = 0.01,
              NatureShrine_Large = 0.01,
            },
            radius = 9.9,
            maxBuildings = 4,
            explanationKey = "MeditationFocusPerAnimusStoneAndShrine",
            explanationKeyAbstract = "MeditationFocusPerAnimusStoneAndShrineAbstract",
          },
        },
      },
      CompProperties_Glower = {
        glowRadius = 3.75,
        glowColor = {110, 116, 125, 0},
      },
      CompProperties_SpawnSubplant = {
        subplant = "Plant_GrassAnima",
        spawnSound = "AnimaTreeProgress",
      },
      CompProperties_Psylinkable = {
        requiredSubplantCountPerPsylinkLevel = {
          "20",
          "20",
          "20",
          "20",
          "20",
          "20",
        },
        requiredFocus = "Natural",
        linkSound = "AnimaTreeLink",
        enoughPlantsLetterLabel = "About: Anima tree linking",
        enoughPlantsLetterText = "The anima tree now has {0} anima grass around it. This is enough for a tribal person to begin their first linking ritual!\n\nThe linking ritual gives a level of psylink and the ability to use psychic powers. Upgrading to a higher level requires more grass at each level.\n\nThe anima grass requirements for linking rituals to upgrade psycasters are:\n\n{1}\n\nNote: Only those with the nature focus type can meditate to or link with anima trees. You can see a person's focus types by looking at their info card with the ‘i' button.",
      },
      CompProperties_GiveThoughtToAllMapPawnsOnDestroy = {
        thought = "AnimaScream",
        message = "The anima tree has died and emitted a disturbing psychic scream.",
      },
      CompProperties_PlaySoundOnDestroy = {
        sound = "AnimaTreeScream",
      },
      CompProperties_SelfhealHitpoints = {
        ticksPerHeal = 2000,
      },
      CompProperties_ToggleDrawAffectedMeditationFoci = {},
    },
  },

  ["ThingDef:Plant_GrassAnima"] = {
    _ = {
      ParentName = "PlantBaseNonEdible",
      DefCategory = "ThingDef",
      FileName = "Plants_Wild.xml",
      DLC = "Royalty",
    },
    defName = "Plant_GrassAnima",
    label = "anima grass",
    description = [[A grass infused with luminous microorganisms. Tribal peoples find that anima grass grows around the base of an anima tree as they meditate. It seems to reflect some kind of strengthening of the tree's psychic power.\n\nOffworld scientists have tried to study the phenomenon, but the grass degenerates into normal plant matter when observed too closely.\n\nAnimals refuse eat anima grass. Tribal stories say this is done out of respect and fear.]],
    statBases = {
      MaxHitPoints = 85,
      Flammability = 1.3,
    },
    plant = {
      fertilityMin = 0.02,
      fertilitySensitivity = 0,
      sowMinSkill = 0,
      growDays = 1,
      lifespanDaysPerGrowDays = 60,
      harvestWork = 40,
      dieFromToxicFallout = false,
    },
  },

}