items

items.item_flags

<bitfield-type type-name="item_flags">
  <flag-bit name="on_ground">
    Item on ground
  </flag-bit>
  <flag-bit name="in_job">
    Item currently being used in a job
  </flag-bit>
  <flag-bit name="hostile">
    Item owned by hostile
  </flag-bit>
  <flag-bit name="in_inventory">
    Item in a creature, workshop or container inventory
  </flag-bit>
  <flag-bit name="removed">
    completely invisible and with no position
  </flag-bit>
  <flag-bit name="in_building">
    Part of a building (including mechanisms, bodies in coffins)
  </flag-bit>
  <flag-bit name="container">
    Set on anything that contains or contained items?
  </flag-bit>
  <flag-bit name="dead_dwarf">
    Dwarfs dead body or body part
  </flag-bit>
  <flag-bit name="rotten">
    Rotten food
  </flag-bit>
  <flag-bit name="spider_web">
    Thread in spider web
  </flag-bit>
  <flag-bit name="construction">
    Material used in construction
  </flag-bit>
  <flag-bit name="encased">
    Item encased in ice or obsidian
  </flag-bit>
  <flag-bit name="unk12">
    unknown, unseen
  </flag-bit>
  <flag-bit name="murder">
    Implies murder - used in fell moods
  </flag-bit>
  <flag-bit name="foreign">
    Item is imported
  </flag-bit>
  <flag-bit name="trader">
    Item ownwed by trader
  </flag-bit>
  <flag-bit name="owned">
    Item is owned by a dwarf
  </flag-bit>
  <flag-bit name="garbage_collect">
    Marked for deallocation by DF it seems
  </flag-bit>
  <flag-bit name="artifact">
    Artifact
  </flag-bit>
  <flag-bit name="forbid">
    Forbidden item
  </flag-bit>
  <flag-bit name="already_uncategorized">
    unknown, unseen
  </flag-bit>
  <flag-bit name="dump">
    Designated for dumping
  </flag-bit>
  <flag-bit name="on_fire">
    Indicates if item is on fire, Will Set Item On Fire if Set!
  </flag-bit>
  <flag-bit name="melt">
    Designated for melting, if applicable
  </flag-bit>
  <flag-bit name="hidden">
    Hidden item
  </flag-bit>
  <flag-bit name="in_chest">
    Stored in chest/part of well?
  </flag-bit>
  <flag-bit name="use_recorded">
    transient in unit.used_items update
  </flag-bit>
  <flag-bit name="artifact_mood">
    created by mood/named existing item
  </flag-bit>
  <flag-bit name="temps_computed">
    melting/boiling/ignite/etc. points
  </flag-bit>
  <flag-bit name="weight_computed"/>
  <flag-bit name="unk30">
    unknown, unseen
  </flag-bit>
  <flag-bit name="from_worldgen">
    created by underground critters?
  </flag-bit>
</bitfield-type>

items.item_flags2

<bitfield-type type-name="item_flags2">
  <flag-bit name="has_rider">
    vehicle with a rider
  </flag-bit>
  <flag-bit name="unk1"/>
  <flag-bit name="grown"/>
  <flag-bit name="has_written_content"/>
</bitfield-type>

items.item_magicness_type

<enum-type type-name="item_magicness_type" base-type="int16_t">
  <enum-item name="Sparkle"/>
  <enum-item name="AirWarped"/>
  <enum-item name="Whistle"/>
  <enum-item name="OddlySquare"/>
  <enum-item name="SmallBumps"/>
  <enum-item name="EarthSmell"/>
  <enum-item name="Lightning"/>
  <enum-item name="GrayHairs">
    with value of 10 or higher, creatures that look at the item cannot
     think negative thoughts
  </enum-item>
  <enum-item name="RustlingLeaves"/>
</enum-type>

items.item_magicness

<struct-type type-name="item_magicness">
  <enum base-type="int16_t" name="type"
      type-name="item_magicness_type"/>
  <int16_t name="value">
    boosts item value by 50*this
  </int16_t>
  <int16_t/>
  <int32_t name="flags">
    1=does not show up in item description or alter item value
  </int32_t>
</struct-type>

items.temperaturest

<struct-type type-name="temperaturest">
  seems like a convenient name
  <uint16_t name="whole" init-value="10050"/>
  <int16_t name="fraction" init-value="0"/>
</struct-type>

items.spatter_common

<struct-type type-name="spatter_common">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <enum type-name="matter_state" base-type="int16_t"
      name="mat_state"/>
  <compound name="temperature" type-name="temperaturest"/>
  <int32_t name="size">
    1-24=spatter, 25-49=smear, 50-* = coating
  </int32_t>
  <bitfield base-type="uint16_t" name="base_flags">
    <flag-bit name="evaporates">
      does not contaminate tile when washed away
    </flag-bit>
    v0.40.13
  </bitfield>
  <padding size="2">
    needed for proper alignment of spatter on gcc
  </padding>
</struct-type>

items.spatter

<struct-type type-name="spatter" inherits-from="spatter_common">
  <int16_t name="body_part_id"
      refers-to="$$._global._parent._global.body.body_plan.body_parts[
      $]"/>
  <bitfield base-type="uint16_t" name="flags">
    <flag-bit name="water_soluble"/>
  </bitfield>
</struct-type>

items.item_quality

<enum-type type-name="item_quality" base-type="int16_t">
  <enum-item name="Ordinary"/>
  <enum-item name="WellCrafted"/>
  <enum-item name="FinelyCrafted"/>
  <enum-item name="Superior"/>
  <enum-item name="Exceptional"/>
  <enum-item name="Masterful"/>
  <enum-item name="Artifact"/>
</enum-type>

items.slab_engraving_type

<enum-type type-name="slab_engraving_type" base-type="int16_t">
  <enum-item name="Slab" value="-1"/>
  <enum-item name="Memorial"/>
  <enum-item name="CraftShopSign"/>
  <enum-item name="WeaponsmithShopSign"/>
  <enum-item name="ArmorsmithShopSign"/>
  <enum-item name="GeneralStoreSign"/>
  <enum-item name="FoodShopSign"/>
  <enum-item name="Secrets">
    from the gods?
  </enum-item>
  <enum-item name="FoodImportsSign"/>
  <enum-item name="ClothingImportsSign"/>
  <enum-item name="GeneralImportsSign"/>
  <enum-item name="ClothShopSign"/>
  <enum-item name="LeatherShopSign"/>
  <enum-item name="WovenClothingShopSign"/>
  <enum-item name="LeatherClothingShopSign"/>
  <enum-item name="BoneCarverShopSign"/>
  <enum-item name="GemCutterShopSign"/>
  <enum-item name="WeaponsmithShopSign2"/>
  <enum-item name="BowyerShopSign"/>
  <enum-item name="BlacksmithShopSign"/>
  <enum-item name="ArmorsmithShopSign2"/>
  <enum-item name="MetalCraftShopSign"/>
  <enum-item name="LeatherGoodsShopSign"/>
  <enum-item name="CarpenterShopSign"/>
  <enum-item name="StoneFurnitureShopSign"/>
  <enum-item name="MetalFurnitureShopSign"/>
  <enum-item name="DemonIdentity">
    when a demon assumes identity?
  </enum-item>
  <enum-item name="TavernSign"/>
</enum-type>

items.item

<class-type type-name="item" original-name="itemst"
    instance-vector="$global.world.items.all" key-field="id">
  <compound name="pos" type-name="coord"/>
  <compound name="flags" type-name="item_flags"/>
  <compound name="flags2" type-name="item_flags2">
    v0.34.08
  </compound>
  <uint32_t name="age"/>
  <int32_t name="id"/>
  <stl-vector name="specific_refs" pointer-type="specific_ref"/>
  <stl-vector name="general_refs" pointer-type="general_ref"/>
  <int32_t name="world_data_id" ref-target="world_object_data">
    v0.34.01
  </int32_t>
  <int32_t name="world_data_subid" init-value="-1">
    v0.34.01
  </int32_t>
  <uint8_t name="stockpile_countdown">
    -1 per 50 frames; then check if needs moving
  </uint8_t>
  <uint8_t name="stockpile_delay">
    used to reset countdown; randomly varies
  </uint8_t>
  <int16_t name="unk2"/>
  <int32_t name="base_uniform_score"/>
  <int16_t name="walkable_id">
    from map_block.walkable
  </int16_t>
  <uint16_t name="spec_heat"/>
  <uint16_t name="ignite_point"/>
  <uint16_t name="heatdam_point"/>
  <uint16_t name="colddam_point"/>
  <uint16_t name="boiling_point"/>
  <uint16_t name="melting_point"/>
  <uint16_t name="fixed_temp"/>
  <int32_t name="weight">
    if flags.weight_computed
  </int32_t>
  <int32_t name="weight_fraction">
    1e-6
  </int32_t>
  <virtual-methods>
    <vmethod ret-type="item_type" name="getType"/>
    <vmethod ret-type="int16_t" name="getSubtype"/>
    <vmethod ret-type="int16_t" name="getMaterial"/>
    <vmethod ret-type="int32_t" name="getMaterialIndex"/>
    <vmethod name="setSubtype">
      <int16_t/>
    </vmethod>
    <vmethod name="setMaterial">
      <int16_t/>
    </vmethod>
    <vmethod name="setMaterialIndex">
      <int32_t/>
    </vmethod>
    <vmethod ret-type="int16_t" name="getActualMaterial">
      returns an actual material type, never a race
    </vmethod>
    <vmethod ret-type="int32_t" name="getActualMaterialIndex">
      returns an actual material index, never a caste
    </vmethod>
    <vmethod ret-type="int16_t" name="getRace">
      only if the object is made of a "specific creature mat"
    </vmethod>
    <vmethod ret-type="int16_t" name="getCaste">
      only if the object is made of a "specific creature mat"
    </vmethod>
    <vmethod ret-type="int16_t" name="getPlantID">
      only if the object is made of a plant material
    </vmethod>
    <vmethod>
      v0.40.01
    </vmethod>
    <vmethod>
      <int32_t/>
      v0.40.01
    </vmethod>
    <vmethod>
      v0.40.01
    </vmethod>
    <vmethod ret-type="int32_t" name="getTotalDimension"/>
    <vmethod name="setDimension">
      <int32_t name="amount"/>
    </vmethod>
    <vmethod ret-type="bool" name="subtractDimension">
      <int32_t name="amount"/>
    </vmethod>
    <vmethod ret-type="bool" name="isFoodStorage"/>
    <vmethod ret-type="bool" name="isTrackCart"/>
    <vmethod ret-type="bool" name="isWheelbarrow"/>
    <vmethod ret-type="int32_t" name="getVehicleID"/>
    <vmethod name="getStockpile">
      <ret-type>
        <pointer type-name="item_stockpile_ref"/>
      </ret-type>
    </vmethod>
    <vmethod ret-type="bool" name="containsPlaster"/>
    <vmethod ret-type="bool" name="isPlaster"/>
    <vmethod ret-type="bool" name="getColorOverride">
      <pointer/>
    </vmethod>
    <vmethod name="getHistoryInfo">
      <ret-type>
        <pointer>
          <pointer type-name="item_history_info"/>
        </pointer>
      </ret-type>
    </vmethod>
    <vmethod ret-type="bool" name="hasToolUse">
      <int16_t/>
    </vmethod>
    <vmethod ret-type="bool"/>
    <vmethod name="becomePaste"/>
    <vmethod name="becomePressed"/>
    <vmethod name="calculateWeight"/>
    <vmethod ret-type="bool" name="isSharpStone"/>
    <vmethod ret-type="bool" name="isCrystalGlassable"/>
    <vmethod ret-type="bool" name="isMetalOre">
      <int16_t name="matIndex"/>
    </vmethod>
    <vmethod name="clearLastTempUpdateTS"/>
    <vmethod name="listNotableKills">
      <pointer type-name="stl-string" name="string_ptr"/>
    </vmethod>
    <vmethod ret-type="uint16_t" name="getSpecHeat"/>
    <vmethod ret-type="uint16_t" name="getIgnitePoint"/>
    <vmethod ret-type="uint16_t" name="getHeatdamPoint"/>
    <vmethod ret-type="uint16_t" name="getColddamPoint"/>
    <vmethod ret-type="uint16_t" name="getBoilingPoint"/>
    <vmethod ret-type="uint16_t" name="getMeltingPoint"/>
    <vmethod ret-type="uint16_t" name="getFixedTemp"/>
    <vmethod ret-type="int32_t" name="getSolidDensity"/>
    <vmethod ret-type="bool" name="materialRots"/>
    <vmethod ret-type="uint16_t" name="getTemperature"/>
    <vmethod ret-type="bool" name="adjustTemperature">
      <uint16_t name="target"/>
      <int32_t name="unk"/>
    </vmethod>
    <vmethod/>
    <vmethod name="extinguish"/>
    <vmethod ret-type="int8_t" name="getGloveHandedness"/>
    <vmethod name="setGloveHandedness">
      <int8_t/>
    </vmethod>
    <vmethod ret-type="bool" name="isSpike"/>
    <vmethod ret-type="bool" name="isScrew"/>
    <vmethod ret-type="bool" name="isBuildMat"/>
    <vmethod ret-type="bool" name="isTemperatureSafe">
      <int8_t>
        1 fire, 2 magma
      </int8_t>
    </vmethod>
    <vmethod name="setRandSubtype">
      <int32_t name="entity_id"/>
    </vmethod>
    <vmethod ret-type="int8_t" name="getWeaponSize">
      weapon racks have capacity 5
    </vmethod>
    <vmethod ret-type="int16_t" name="getWear"/>
    <vmethod name="setWear">
      <int16_t/>
    </vmethod>
    <vmethod ret-type="int32_t" name="getMaker"/>
    <vmethod name="setMaker">
      <int32_t name="unit_id"/>
    </vmethod>
    <vmethod name="getCorpseInfo">
      <pointer type-name="int16_t" name="prace"/>
      <pointer type-name="int16_t" name="pcaste"/>
      <pointer name="phfig">
        <pointer type-name="historical_figure"/>
      </pointer>
      <pointer name="punit">
        <pointer type-name="unit"/>
      </pointer>
    </vmethod>
    <vmethod/>
    <vmethod name="getGloveFlags">
      <ret-type>
        <pointer>
          <df-flagarray/>
        </pointer>
      </ret-type>
    </vmethod>
    <vmethod name="getItemShapeDesc">
      <ret-type>
        <pointer type-name="stl-string"/>
      </ret-type>
      a statue/figurine of "string goes here"
    </vmethod>
    <vmethod ret-type="bool" name="isMatchingAmmoItem">
      <pointer type-name="item_filter_spec"/>
    </vmethod>
    <vmethod>
      <pointer/>
      <pointer/>
    </vmethod>
    <vmethod>
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod>
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod name="setSeedsPlantSkillLevel">
      <int32_t name="level"/>
    </vmethod>
    <vmethod ret-type="int16_t" name="getCorpseSize">
      size_info.size_cur
    </vmethod>
    <vmethod ret-type="bool" name="ageItem">
      <int32_t name="amount"/>
    </vmethod>
    <vmethod ret-type="int32_t" name="getCritterAirdrownTimer"/>
    <vmethod name="setCritterAirdrownTimer">
      <int32_t/>
    </vmethod>
    <vmethod name="incrementCritterAirdrownTimer"/>
    <vmethod ret-type="int32_t" name="getRotTimer"/>
    <vmethod name="setRotTimer">
      <int32_t name="val"/>
    </vmethod>
    <vmethod name="incrementRotTimer"/>
    <vmethod ret-type="bool" name="isBogeymanCorpse"/>
    <vmethod>
      <int32_t/>
    </vmethod>
    <vmethod name="getAmmoType">
      <ret-type>
        <pointer type-name="stl-string"/>
      </ret-type>
      <pointer type-name="stl-string"/>
    </vmethod>
    <vmethod ret-type="bool" name="isLiquidPowder"/>
    <vmethod ret-type="bool" name="isLiquid"/>
    <vmethod ret-type="bool"/>
    <vmethod ret-type="int32_t" name="getVolume">
      for putting in containers, building clutter
    </vmethod>
    <vmethod name="addImprovementFromJob">
      <ret-type>
        <pointer type-name="itemimprovement"/>
      </ret-type>
      <enum base-type="int32_t" type-name="improvement_type"
          name="imp_type"/>
      <pointer type-name="job" name="job"/>
      <pointer type-name="unit" name="unit"/>
      <int16_t name="mat_type"/>
      <int32_t name="mat_index"/>
      <int32_t name="shape" ref-target="descriptor_shape"/>
      <pointer type-name="historical_entity" name="entity"/>
      <pointer type-name="item" name="item"/>
      <pointer type-name="world_site" name="site"/>
      <int16_t name="unk">
        used to compute quality if !job||!unit
      </int16_t>
      <bool name="unshaped">
        glazed
      </bool>
    </vmethod>
    <vmethod ret-type="bool" name="isWeapon"/>
    <vmethod ret-type="bool" name="isArmorNotClothing"/>
    <vmethod ret-type="bool" name="isMillable"/>
    <vmethod ret-type="bool" name="isProcessableThread"/>
    <vmethod ret-type="bool" name="isProcessableVial"/>
    <vmethod ret-type="bool" name="isProcessableBarrel"/>
    <vmethod ret-type="bool" name="isEdiblePlant"/>
    <vmethod ret-type="bool" name="isEdibleRaw">
      <int32_t name="hunger"/>
    </vmethod>
    <vmethod ret-type="bool" name="isEdibleCarnivore">
      In item_foodst, requires MEAT or FISH ingredient.
      <int32_t name="hunger"/>
    </vmethod>
    <vmethod ret-type="bool" name="isEdibleBonecarn">
      In item_foodst, requires CORPSEPIECE, MEAT or FISH ingredient.
      <int32_t name="hunger"/>
    </vmethod>
    <vmethod ret-type="bool" name="moveToGround">
      <int16_t name="x"/>
      <int16_t name="y"/>
      <int16_t name="z"/>
    </vmethod>
    <vmethod name="categorize">
      <bool name="in_play"/>
      Add item to world.items.other.*
    </vmethod>
    <vmethod name="uncategorize">
      Remove item from world.items.other.*
    </vmethod>
    <vmethod ret-type="bool" name="isFurniture">
      <bool name="empty"/>
    </vmethod>
    <vmethod ret-type="bool" name="isPressed"/>
    <vmethod ret-type="bool" name="isAnimal">
      stored in Animal stockpiles
    </vmethod>
    <vmethod name="assignQuality">
      <pointer name="maker" type-name="unit"/>
      <enum base-type="int16_t" name="job_skill"
          type-name="job_skill"/>
    </vmethod>
    <vmethod>
      <int32_t/>
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod>
      <int32_t/>
    </vmethod>
    <vmethod name="notifyLostMasterwork"/>
    <vmethod name="addMagic">
      <int32_t/>
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod name="magic_unk1">
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod name="magic_unk2">
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod name="magic_unk3">
      <int32_t/>
    </vmethod>
    <vmethod name="magic_unk4">
      <int32_t/>
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod name="setDisplayColor">
      <pointer/>
    </vmethod>
    <vmethod ret-type="bool" name="isDamagedByHeat"/>
    <vmethod ret-type="bool" name="needTwoHandedWield">
      <int32_t/>
    </vmethod>
    <vmethod name="splitStack">
      <ret-type>
        <pointer type-name="item"/>
      </ret-type>
      <int32_t name="stack_size"/>
      <bool name="preserve_containment"/>
    </vmethod>
    <vmethod ret-type="bool" name="isTameableVermin"/>
    <vmethod ret-type="bool" name="isDye"/>
    <vmethod ret-type="bool" name="isMilkable">
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod ret-type="bool" name="isSandBearing"/>
    <vmethod ret-type="bool" name="isLyeBearing"/>
    <vmethod ret-type="bool" name="isAnimalProduct"/>
    <vmethod name="getStorageInfo">
      <pointer type-name="int16_t" name="item_type"/>
      <pointer type-name="int16_t" name="material_category"/>
    </vmethod>
    <vmethod ret-type="bool" name="addWear">
      <int32_t name="delta"/>
      <bool name="simple"/>
      <bool name="lose_masterwork"/>
    </vmethod>
    <vmethod ret-type="bool" name="incWearTimer">
      <int32_t name="delta"/>
    </vmethod>
    <vmethod ret-type="bool" name="checkWearDestroy">
      <bool name="simple"/>
      <bool name="lose_masterwork"/>
    </vmethod>
    <vmethod name="addContaminant">
      <int16_t name="mat_type"/>
      <int32_t name="mat_index"/>
      <enum type-name="matter_state" base-type="int16_t"
          name="mat_state"/>
      <uint16_t name="temp"/>
      <int32_t name="size"/>
      <int16_t name="body_part_id"/>
      <uint16_t name="flags"/>
    </vmethod>
    <vmethod name="removeContaminantByIdx">
      <int32_t name="index"/>
      <int32_t name="amount"/>
    </vmethod>
    <vmethod name="removeContaminant">
      <int16_t name="mat_type"/>
      <int32_t name="mat_index"/>
      <int32_t name="amount"/>
    </vmethod>
    <vmethod name="tradeUnitContaminants">
      <pointer type-name="unit"/>
      <int16_t name="body_part_id"/>
    </vmethod>
    <vmethod name="tradeItemContaminants">
      <pointer type-name="item"/>
      calls item.tIC2(this)
    </vmethod>
    <vmethod name="tradeItemContaminants2">
      <pointer type-name="item_actual"/>
    </vmethod>
    <vmethod name="contaminateWound">
      <pointer type-name="unit"/>
      <pointer type-name="unit_wound"/>
      <uint8_t name="shift"/>
      <int16_t name="body_part_id"/>
    </vmethod>
    <vmethod name="write_file">
      <pointer name="file" type-name="file_compressorst"/>
    </vmethod>
    <vmethod name="read_file">
      <pointer name="file" type-name="file_compressorst"/>
      <int32_t name="loadversion"/>
    </vmethod>
    <vmethod name="getWeaponAttacks">
      <ret-type>
        <pointer>
          <stl-vector type-name="pointer"/>
        </pointer>
      </ret-type>
    </vmethod>
    <vmethod/>
    <vmethod ret-type="bool" name="isSplittable">
      if false, you throw the entire stack at once
    </vmethod>
    <vmethod>
      <pointer/>
    </vmethod>
    <vmethod>
      <pointer/>
      <pointer/>
    </vmethod>
    <vmethod name="propagateUnitRefs"/>
    <vmethod ret-type="bool" name="isBag">
      BOX made of cloth
    </vmethod>
    <vmethod ret-type="bool" name="isSand"/>
    <vmethod>
      returns item_actual.anon_1
    </vmethod>
    <vmethod ret-type="int32_t" name="getStackSize"/>
    <vmethod name="addStackSize">
      <int32_t name="amount"/>
    </vmethod>
    <vmethod name="setStackSize">
      <int32_t name="amount"/>
    </vmethod>
    <vmethod ret-type="bool" name="isAmmoClass">
      <pointer type-name="stl-string"/>
    </vmethod>
    <vmethod ret-type="bool" name="isAutoClean">
      delete on_ground every season when in ANY_AUTO_CLEAN; default
      true
    </vmethod>
    <vmethod ret-type="bool" name="setTemperatureFromMapTile">
      <int32_t name="x"/>
      <int32_t name="y"/>
      <int32_t name="z"/>
      <bool name="local"/>
      <bool name="contained"/>
    </vmethod>
    <vmethod ret-type="bool" name="setTemperatureFromMap">
      <bool name="local"/>
      <bool name="contained"/>
    </vmethod>
    <vmethod ret-type="bool" name="setTemperature">
      <uint16_t name="temp"/>
      <bool name="local"/>
      <bool name="contained"/>
    </vmethod>
    <vmethod ret-type="bool" name="updateTempFromMap">
      <bool name="local"/>
      <bool name="contained"/>
      <bool name="adjust"/>
      <int32_t name="multiplier"/>
    </vmethod>
    <vmethod ret-type="bool" name="updateTemperature">
      <uint16_t name="temp"/>
      <bool name="local"/>
      <bool name="contained"/>
      <bool name="adjust"/>
      <int32_t name="multiplier"/>
    </vmethod>
    <vmethod ret-type="bool" name="updateFromWeather"/>
    <vmethod ret-type="bool" name="updateContaminants"/>
    <vmethod ret-type="bool" name="checkTemperatureDamage"/>
    <vmethod ret-type="bool" name="checkHeatColdDamage"/>
    <vmethod ret-type="bool" name="checkMeltBoil"/>
    <vmethod ret-type="int16_t" name="getMeleeSkill"/>
    <vmethod ret-type="int16_t" name="getRangedSkill"/>
    <vmethod name="setQuality">
      <int16_t name="quality"/>
    </vmethod>
    <vmethod ret-type="int16_t" name="getQuality"/>
    <vmethod ret-type="int16_t" name="getOverallQuality"/>
    <vmethod ret-type="int16_t" name="getImprovementQuality"/>
    <vmethod ret-type="int32_t" name="getProjectileSize"/>
    <vmethod ret-type="bool" name="isImprovable">
      <pointer type-name="job"/>
      <int16_t name="mat_type"/>
      <int32_t name="mat_index"/>
    </vmethod>
    <vmethod name="setSharpness">
      <int32_t name="unk1"/>
      <int32_t name="unk2"/>
    </vmethod>
    <vmethod ret-type="int32_t" name="getSharpness"/>
    <vmethod ret-type="bool" name="isTotemable"/>
    <vmethod ret-type="bool" name="isDyeable"/>
    <vmethod ret-type="bool" name="isNotDyed"/>
    <vmethod ret-type="bool" name="isDyed"/>
    <vmethod ret-type="bool" name="canSewImage"/>
    <vmethod ret-type="bool"/>
    <vmethod ret-type="bool" name="isProcessableVialAtStill"/>
    <vmethod ret-type="bool" name="isSimilarToItem">
      <enum base-type="int16_t" name="item_type"
          type-name="item_type"/>
      <int16_t name="item_subtype"/>
      <int16_t name="mat_type"/>
      <int32_t name="mat_index"/>
    </vmethod>
    <vmethod ret-type="int32_t" name="getBlockChance"/>
    <vmethod/>
    <vmethod ret-type="int16_t" name="getMakerRace"/>
    <vmethod name="setMakerRace">
      <int16_t/>
    </vmethod>
    <vmethod ret-type="int8_t" name="getEffectiveArmorLevel">
      adds 1 if it has [METAL_ARMOR_LEVELS] and it's made of an
      inorganic mat
    </vmethod>
    <vmethod/>
    <vmethod ret-type="bool" name="isItemOrganicCloth"/>
    <vmethod ret-type="bool" name="isMadeOfOrganicCloth"/>
    <vmethod name="coverWithContaminant">
      <int16_t name="mat_type"/>
      <int32_t name="mat_index"/>
      <enum type-name="matter_state" base-type="int16_t"
          name="mat_state"/>
      <uint16_t name="temperature"/>
      also stops fire; used for rain
    </vmethod>
    <vmethod ret-type="bool" name="hasSpecificImprovements">
      <enum type-name="improvement_type" name="imp_type"/>
    </vmethod>
    <vmethod ret-type="bool" name="hasImprovements"/>
    <vmethod ret-type="bool" name="isImproved"/>
    <vmethod name="getMagic">
      <ret-type>
        <pointer>
          <stl-vector pointer-type="item_magicness"/>
        </pointer>
      </ret-type>
    </vmethod>
    <vmethod name="getItemDescription">
      <pointer type-name="stl-string"/>
      <int8_t name="mode"/>
    </vmethod>
    <vmethod name="getItemDescriptionPrefix">
      <pointer type-name="stl-string"/>
      <int8_t name="mode"/>
      "a " or "the "
    </vmethod>
    <vmethod name="getItemBasicName">
      <pointer type-name="stl-string"/>
      usually just "item"
    </vmethod>
    <vmethod ret-type="int32_t" name="getImprovementsValue">
      <pointer type-name="caravan_state" name="caravan"/>
    </vmethod>
    <vmethod ret-type="bool" name="isExtractBearingFish"/>
    <vmethod ret-type="bool" name="isExtractBearingVermin"/>
    <vmethod/>
    <vmethod ret-type="int32_t" name="getBaseWeight"/>
    <vmethod ret-type="int32_t" name="getWeightShiftBits"/>
    <vmethod ret-type="bool" name="isCollected"/>
    <vmethod ret-type="bool" name="isEdibleVermin"/>
    <vmethod ret-type="uint8_t" name="drawSelf"/>
    <vmethod ret-type="bool" name="isRangedWeapon"/>
    <vmethod ret-type="bool" name="isClothing"/>
    <vmethod ret-type="bool" name="isWet"/>
    <vmethod ret-type="int32_t" name="getCurrencyValue">
      <pointer type-name="historical_entity" name="appraiser"/>
      that is, value of coins
    </vmethod>
    <vmethod ret-type="bool" name="isAssignedToStockpile"/>
    <vmethod ret-type="bool" name="isAssignedToThisStockpile">
      <int32_t/>
    </vmethod>
    <vmethod name="detachStockpileAssignment">
      also removes links from the pile
    </vmethod>
    <vmethod name="removeStockpileAssignment">
      just wipes the fields
    </vmethod>
    <vmethod name="getStockpile2">
      <ret-type>
        <pointer type-name="item_stockpile_ref"/>
      </ret-type>
    </vmethod>
    <vmethod>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod>
      <int32_t/>
    </vmethod>
    <vmethod ret-type="int32_t" name="getThreadDyeValue">
      <pointer type-name="caravan_state" name="caravan"/>
    </vmethod>
    <vmethod name="getColorAndShape">
      <pointer name="colors">
        <stl-vector type-name="int16_t"/>
      </pointer>
      <pointer name="shapes">
        <stl-vector type-name="int16_t"/>
      </pointer>
    </vmethod>
    <vmethod ret-type="bool"/>
    <vmethod ret-type="bool" name="isArmor">
      for armor user skill encumberance
    </vmethod>
    <vmethod ret-type="int32_t" name="calcUniformScore">
      <pointer type-name="squad_uniform_spec"/>
      <bool name="exact_match"/>
      <enum base-type="int16_t" type-name="job_skill"
          name="best_any"/>
      <enum base-type="int16_t" type-name="job_skill"
          name="best_melee"/>
      <enum base-type="int16_t" type-name="job_skill"
          name="best_ranged"/>
    </vmethod>
    <vmethod ret-type="int32_t" name="calcBaseUniformScore"/>
    <vmethod>
      <int32_t/>
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod ret-type="bool"/>
    <vmethod ret-type="bool"/>
    <vmethod>
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
      <int32_t/>
    </vmethod>
    <vmethod/>
    <vmethod/>
    <vmethod name="getSlabEngravingType">
      <ret-type>
        <enum base-type="int16_t" type-name="slab_engraving_type"/>
      </ret-type>
    </vmethod>
    <vmethod ret-type="int32_t" name="getAbsorption"/>
    <vmethod ret-type="bool"/>
    <vmethod ret-type="bool" name="isGemMaterial"/>
    <vmethod name="setGemShape">
      <int32_t name="shape" ref-target="descriptor_shape"/>
    </vmethod>
    <vmethod ret-type="bool" name="hasGemShape"/>
    <vmethod name="getGemShape">
      <ret-type>
        <int32_t ref-target="descriptor_shape"/>
      </ret-type>
    </vmethod>
    <vmethod ret-type="bool">
      v0.40.01
    </vmethod>
    <vmethod is-destructor="true"/>
  </virtual-methods>
</class-type>

items.item_kill_info

<struct-type type-name="item_kill_info">
  <compound name="targets" type-name="historical_kills"/>
  <stl-vector name="slayers" type-name="int32_t"
      ref-target="historical_figure"/>
  <stl-vector name="slayer_kill_counts" type-name="int32_t"/>
</struct-type>

items.item_history_info

<struct-type type-name="item_history_info">
  <pointer name="kills" type-name="item_kill_info"/>
  <int32_t name="unk1"/>
  <int32_t name="unk2"/>
</struct-type>

items.item_actual

<class-type type-name="item_actual" inherits-from="item"
    original-name="item_actualst">
  <int32_t name="stack_size" init-value="1"/>
  <pointer name="history_info">
    <pointer type-name="item_history_info"/>
  </pointer>
  <pointer name="magic">
    <stl-vector pointer-type="item_magicness"/>
  </pointer>
  <pointer name="contaminants">
    <stl-vector pointer-type="spatter"/>
  </pointer>
  <compound name="temperature" type-name="temperaturest"/>
  <int16_t name="wear"/>
  <int32_t name="wear_timer">
    counts up to 806400
  </int32_t>
  <int32_t init-value="-1">
    v0.34.01
  </int32_t>
  <int32_t name="temp_updated_frame" init-value="-1"/>
</class-type>

items.item_crafted

<class-type type-name="item_crafted" inherits-from="item_actual"
    original-name="item_craftedst">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int16_t name="maker_race" ref-target="creature_raw"/>
  <enum base-type="int16_t" name="quality" type-name="item_quality"/>
  <enum base-type="int32_t" name="skill_used" type-name="job_skill"/>
  <int32_t name="maker" ref-target="historical_figure"/>
  <int32_t name="masterpiece_event" ref-target="history_event"/>
</class-type>

items.item_constructed

<class-type type-name="item_constructed" inherits-from="item_crafted"
    original-name="item_constructedst">
  <stl-vector name="improvements" pointer-type="itemimprovement"/>
</class-type>

items.body_part_status

<bitfield-type type-name="body_part_status">
  <flag-bit name="on_fire"/>
  <flag-bit name="missing"/>
  <flag-bit name="organ_loss">
    cyan
  </flag-bit>
  <flag-bit name="organ_damage">
    yellow
  </flag-bit>
  <flag-bit name="muscle_loss">
    red
  </flag-bit>
  <flag-bit name="muscle_damage">
    yellow
  </flag-bit>
  <flag-bit name="bone_loss">
    red
  </flag-bit>
  <flag-bit name="bone_damage">
    yellow
  </flag-bit>
  <flag-bit name="skin_damage">
    brown
  </flag-bit>
  <flag-bit name="motor_nerve_severed"/>
  <flag-bit name="sensory_nerve_severed"/>
  <flag-bit name="spilled_guts"/>
  <flag-bit name="has_splint"/>
  <flag-bit name="has_bandage"/>
  <flag-bit name="has_plaster_cast"/>
  <flag-bit name="grime" count="3"/>
  <flag-bit name="severed_or_jammed">
    seen e.g. on ribs smashed by blunt attack, but quickly disappeared
  </flag-bit>
  <flag-bit name="under_shell"/>
  <flag-bit name="is_shell"/>
  <flag-bit name="unk19">
    on zombified head
  </flag-bit>
  <flag-bit name="unk20">
    on zombified head
  </flag-bit>
</bitfield-type>

items.body_layer_status

<bitfield-type type-name="body_layer_status">
  <flag-bit name="gone"/>
  <flag-bit name="leaking"/>
</bitfield-type>

items.body_component_info

<struct-type type-name="body_component_info">
  <stl-vector name="body_part_status" type-name="body_part_status" ind
      ex-refers-to="$$._global._upglobal.caste.ref-target.body_info.bo
      dy_parts[$]"/>
  <stl-vector name="numbered_masks" type-name="uint32_t">
    1 bit per instance of a numbered body part
  </stl-vector>
  <stl-vector name="nonsolid_remaining" type-name="uint32_t" index-ref
      ers-to="$$._global._upglobal.caste.ref-target.body_info.nonsolid
      _layers[$].refers-to">
    0-100%
  </stl-vector>
  <stl-vector name="layer_status" type-name="body_layer_status" index-
      refers-to="$$._global._upglobal.caste.ref-target.body_info.layer
      _idx[$].refers-to"/>
  <stl-vector name="layer_wound_area" type-name="uint32_t" index-refer
      s-to="$$._global._upglobal.caste.ref-target.body_info.layer_idx[
      $].refers-to"/>
  <stl-vector name="layer_cut_fraction" type-name="uint32_t" index-ref
      ers-to="$$._global._upglobal.caste.ref-target.body_info.layer_id
      x[$].refers-to">
    0-10000
  </stl-vector>
  <stl-vector name="layer_dent_fraction" type-name="uint32_t" index-re
      fers-to="$$._global._upglobal.caste.ref-target.body_info.layer_i
      dx[$].refers-to">
    0-10000
  </stl-vector>
  <stl-vector name="layer_effect_fraction" type-name="uint32_t" index-
      refers-to="$$._global._upglobal.caste.ref-target.body_info.layer
      _idx[$].refers-to">
    0-1000000000
  </stl-vector>
</struct-type>

items.body_size_info

<struct-type type-name="body_size_info">
  <int32_t name="size_cur"/>
  <int32_t name="size_base"/>
  <int32_t name="area_cur">
    size_cur^0.666
  </int32_t>
  <int32_t name="area_base">
    size_base^0.666
  </int32_t>
  <int32_t name="length_cur">
    (size_cur*10000)^0.333
  </int32_t>
  <int32_t name="length_base">
    (size_base*10000)^0.333
  </int32_t>
</struct-type>

items.corpse_material_type

<enum-type type-name="corpse_material_type">
  <enum-item name="Plant"/>
  <enum-item name="Silk"/>
  <enum-item name="Leather"/>
  <enum-item name="Bone"/>
  <enum-item name="Shell"/>
  <enum-item/>
  <enum-item name="Soap"/>
  <enum-item name="Tooth"/>
  <enum-item name="Horn"/>
  <enum-item name="Pearl"/>
  <enum-item name="HairWool"/>
  <enum-item name="Yarn"/>
</enum-type>

items.item_body_component

<class-type type-name="item_body_component"
    inherits-from="item_actual" original-name="item_body_componentst">
  <int16_t name="race" ref-target="creature_raw"/>
  <int32_t name="hist_figure_id" ref-target="historical_figure"/>
  <int32_t name="unit_id" ref-target="unit"/>
  <int16_t name="caste" ref-target="caste_raw" aux-value="$$.race"/>
  <int8_t name="sex">
    -1 n/a, 0 female, 1 male
  </int8_t>
  <int16_t name="race2" ref-target="creature_raw"/>
  <int16_t name="caste2" ref-target="caste_raw" aux-value="$$.race2"/>
  <int32_t name="rot_timer"/>
  <int8_t name="unk_8c"/>
  <compound name="body">
    <stl-vector name="wounds" pointer-type="unit_wound"/>
    <static-array name="unk_100" type-name="int32_t" count="10"/>
    <int32_t name="unk_c8"/>
    <compound name="components" type-name="body_component_info"/>
    <static-array type-name="int32_t" name="physical_attr_value"
        count="6" index-enum="physical_attribute_type"/>
    <static-array type-name="int32_t" name="physical_attr_unk2"
        count="6" index-enum="physical_attribute_type"/>
    <compound name="size_info" type-name="body_size_info"/>
    <stl-vector name="body_part_relsize" type-name="int32_t">
      =unit.enemy.body_part_relsize
    </stl-vector>
    <stl-vector name="body_modifiers" type-name="int32_t" index-refers
        -to="$$._global.caste.ref-target.body_appearance_modifiers[$]"
        />
    <stl-vector name="bp_modifiers" type-name="int32_t" index-refers-t
        o="$$._global.caste.ref-target.bp_appearance.modifier_idx[$].r
        efers-to"/>
    <int32_t name="size_modifier">
      =unit.appearance.size_modifier
    </int32_t>
  </compound>
  <int32_t name="birth_year"/>
  <int32_t name="birth_time"/>
  <int32_t name="curse_year">
    v0.34.01
  </int32_t>
  <int32_t name="curse_time">
    v0.34.01
  </int32_t>
  <int32_t name="birth_year_bias" init-value="0">
    v0.34.01
  </int32_t>
  <int32_t name="birth_time_bias" init-value="0">
    v0.34.01
  </int32_t>
  <int32_t name="death_year"/>
  <int32_t name="death_time"/>
  <compound name="appearance">
    <stl-vector name="colors" type-name="int32_t"/>
    <stl-vector name="unk_1e8" type-name="int16_t"/>
    <stl-vector name="unk_1f8" type-name="int32_t"/>
    <stl-vector name="unk_208" type-name="int32_t"/>
    <stl-vector name="unk_218" type-name="int32_t"/>
  </compound>
  <int32_t name="blood_count"/>
  <int32_t name="stored_fat"/>
  <int32_t name="hist_figure_id2" ref-target="historical_figure"/>
  <int32_t>
    v0.34.01, actual offset unknown
  </int32_t>
  <int32_t name="unit_id2" ref-target="unit"/>
  <bitfield name="corpse_flags">
    <flag-bit name="unbutchered"/>
    <flag-bit/>
    <flag-bit/>
    <flag-bit/>
    <flag-bit name="bone"/>
    <flag-bit name="shell"/>
    <flag-bit/>
    <flag-bit/>
    <flag-bit/>
    <flag-bit/>
    <flag-bit/>
    <flag-bit/>
    <flag-bit name="skull"/>
    <flag-bit name="separated_part">
      ?
    </flag-bit>
    <flag-bit name="hair_wool"/>
    <flag-bit name="yarn"/>
  </bitfield>
  <static-array name="material_amount" type-name="int32_t" count="19"
      index-enum="corpse_material_type"/>
  <compound name="bone1">
    <int16_t name="mat_type" ref-target="material"
        aux-value="$$.mat_index"/>
    <int32_t name="mat_index"/>
  </compound>
  <compound name="bone2">
    <int16_t name="mat_type" ref-target="material"
        aux-value="$$.mat_index"/>
    <int32_t name="mat_index"/>
  </compound>
</class-type>

items.item_corpsest

<class-type type-name="item_corpsest"
    inherits-from="item_body_component"/>

items.item_corpsepiecest

<class-type type-name="item_corpsepiecest"
    inherits-from="item_body_component"/>

items.item_critter

<class-type type-name="item_critter" inherits-from="item_actual"
    original-name="item_critterst">
  <int16_t name="race" ref-target="creature_raw"/>
  <int16_t name="caste" ref-target="caste_raw" aux-value="$$.race"/>
  <int32_t name="milk_timer"/>
  <int32_t name="airdrown_timer"/>
  <compound name="name" type-name="language_name"/>
</class-type>

items.item_matstate

<bitfield-type type-name="item_matstate">
  <flag-bit name="no_auto_clean">
    isAutoClean returns false
  </flag-bit>
  <flag-bit name="pressed"/>
  <flag-bit name="paste"/>
</bitfield-type>

items.item_liquipowder

<class-type type-name="item_liquipowder" inherits-from="item_actual"
    original-name="item_liquipowderst">
  <compound name="mat_state" type-name="item_matstate"/>
  <int32_t name="dimension" init-value="150"/>
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
</class-type>

items.item_liquid

<class-type type-name="item_liquid" inherits-from="item_liquipowder"
    original-name="item_liquidst"/>

items.item_powder

<class-type type-name="item_powder" inherits-from="item_liquipowder"
    original-name="item_powderst"/>

items.item_barst

<class-type type-name="item_barst" inherits-from="item_actual">
  <int16_t name="subtype"/>
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int32_t name="dimension" init-value="150"/>
</class-type>

items.item_smallgemst

<class-type type-name="item_smallgemst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int32_t name="shape" ref-target="descriptor_shape"/>
</class-type>

items.item_blocksst

<class-type type-name="item_blocksst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
</class-type>

items.item_roughst

<class-type type-name="item_roughst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
</class-type>

items.item_boulderst

<class-type type-name="item_boulderst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
</class-type>

items.item_woodst

<class-type type-name="item_woodst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
</class-type>

items.item_branchst

<class-type type-name="item_branchst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
</class-type>

items.item_rockst

<class-type type-name="item_rockst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int32_t name="sharpness"/>
  <int32_t name="unk_84"/>
</class-type>

items.item_seedsst

<class-type type-name="item_seedsst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int32_t name="grow_counter"/>
  <int32_t name="planting_skill"/>
</class-type>

items.item_skin_tannedst

<class-type type-name="item_skin_tannedst"
    inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int32_t name="unk_80"/>
</class-type>

items.item_meatst

<class-type type-name="item_meatst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int32_t name="rot_timer"/>
</class-type>

items.item_plantst

<class-type type-name="item_plantst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int32_t name="rot_timer"/>
</class-type>

items.item_plant_growthst

<class-type type-name="item_plant_growthst"
    inherits-from="item_actual">
  <int16_t name="subtype"/>
  <int32_t/>
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int32_t name="rot_timer"/>
</class-type>

items.item_cheesest

<class-type type-name="item_cheesest" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int32_t name="rot_timer"/>
</class-type>

items.item_globst

<class-type type-name="item_globst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int32_t name="rot_timer"/>
  <compound name="mat_state" type-name="item_matstate"/>
  <int32_t/>
</class-type>

items.item_remainsst

<class-type type-name="item_remainsst" inherits-from="item_actual">
  <int16_t name="race" ref-target="creature_raw"/>
  <int16_t name="caste" ref-target="caste_raw" aux-value="$$.race"/>
  <int32_t name="rot_timer"/>
</class-type>

items.item_fishst

<class-type type-name="item_fishst" inherits-from="item_actual">
  <int16_t name="race" ref-target="creature_raw"/>
  <int16_t name="caste" ref-target="caste_raw" aux-value="$$.race"/>
  <int32_t name="rot_timer"/>
</class-type>

items.item_fish_rawst

<class-type type-name="item_fish_rawst" inherits-from="item_actual">
  <int16_t name="race" ref-target="creature_raw"/>
  <int16_t name="caste" ref-target="caste_raw" aux-value="$$.race"/>
  <int32_t name="rot_timer"/>
</class-type>

items.item_foodst

<class-type type-name="item_foodst" inherits-from="item_crafted">
  <pointer name="subtype" type-name="itemdef_foodst"/>
  <int32_t name="entity" ref-target="historical_entity"/>
  <int16_t name="recipe_id"/>
  <stl-vector name="ingredients">
    <pointer>
      <int16_t/>
      <enum base-type="int16_t" name="item_type"
          type-name="item_type"/>
      <int16_t name="unk_4" init-value="-1"/>
      <int16_t name="mat_type" ref-target="material"
          aux-value="$$.mat_index"/>
      <int32_t name="mat_index" init-value="-1"/>
      <int32_t name="maker" ref-target="historical_figure"/>
      <enum base-type="int16_t" name="quality"
          type-name="item_quality"/>
      <int32_t name="unk_14"/>
      <int32_t name="unk_18"/>
    </pointer>
  </stl-vector>
  <int32_t name="rot_timer"/>
</class-type>

items.item_verminst

<class-type type-name="item_verminst" inherits-from="item_critter"/>

items.item_petst

<class-type type-name="item_petst" inherits-from="item_critter">
  <int32_t name="owner_id" ref-target="unit"/>
  <bitfield name="pet_flags">
    <flag-bit name="available_for_adoption"/>
  </bitfield>
</class-type>

items.item_drinkst

<class-type type-name="item_drinkst" inherits-from="item_liquid"/>

items.item_powder_miscst

<class-type type-name="item_powder_miscst"
    inherits-from="item_powder"/>

items.item_liquid_miscst

<class-type type-name="item_liquid_miscst"
    inherits-from="item_liquid">
  <int32_t name="unk_88"/>
</class-type>

items.item_threadst

<class-type type-name="item_threadst" inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int16_t name="dye_mat_type" ref-target="material"
      aux-value="$$.dye_mat_index"/>
  <int32_t name="dye_mat_index"/>
  <int32_t name="unk_88"/>
  <int32_t name="unk_8c"/>
  <int16_t name="dye_quality"/>
  <int16_t name="unk_92"/>
  <int32_t name="unk_94"/>
  <int8_t name="unk_98"/>
  <int32_t name="dimension" init-value="15000"/>
</class-type>

items.item_eggst

<class-type type-name="item_eggst" inherits-from="item_actual">
  <int16_t name="race" ref-target="creature_raw"/>
  <int16_t name="caste" ref-target="caste_raw" aux-value="$$.race"/>
  <int32_t name="unk_7c"/>
  <compound name="egg_materials" type-name="material_vec_ref"/>
  <bitfield name="egg_flags">
    <flag-bit name="fertile">
      allows the incubation_counter to be checked/incremented
    </flag-bit>
  </bitfield>
  <int32_t name="incubation_counter" init-value="0">
    increments when fertile in unforbidden nestbox, hatch at >= 100800
     (3 months)
  </int32_t>
  <int32_t name="hatchling_civ_id" ref-target="historical_entity">
    hatchlings will have this civ_id
  </int32_t>
  <int32_t name="hatchling_population_id"
      ref-target="entity_population">
    hatchlings will have this population_id
  </int32_t>
  <int32_t name="hatchling_unit_unk_c0" init-value="-1">
    hatchlings will have this unit.unk_c0 value
  </int32_t>
  <int32_t>
    v0.40.01
  </int32_t>
  <pointer name="mothers_genes" type-name="unit_genes">
    object owned by egg item
  </pointer>
  <int16_t name="mothers_caste" ref-target="caste_raw"
      aux-value="$$.race"/>
  <int32_t>
    v0.40.01
  </int32_t>
  <pointer name="fathers_genes" type-name="unit_genes">
    object owned by egg item
  </pointer>
  <int16_t name="fathers_caste" ref-target="caste_raw"
      aux-value="$$.race">
    -1 if no father genes
  </int16_t>
  <int32_t>
    v0.40.01
  </int32_t>
  <compound name="hatchling_flags1" type-name="unit_flags1">
    used primarily for bit_flag:tame
  </compound>
  <compound name="hatchling_flags2" type-name="unit_flags2">
    used primarily for bit_flag:roaming_wilderness_population_source
  </compound>
  <compound name="hatchling_flags3" type-name="unit_flags3">
    not normally used, most/all do not stick
  </compound>
  <int32_t name="unk_v42_1">
    v0.42.01
  </int32_t>
  <enum name="hatchling_training_level" base-type="int32_t"
      type-name="animal_training_level" init-value="WildUntamed"/>
  <compound name="hatchling_animal_population"
      type-name="world_population_ref"/>
  <int32_t name="hatchling_mother_id" ref-target="unit"/>
  <int32_t name="size"/>
</class-type>

items.item_doorst

<class-type type-name="item_doorst" inherits-from="item_constructed"/>

items.item_floodgatest

<class-type type-name="item_floodgatest"
    inherits-from="item_constructed"/>

items.item_bedst

<class-type type-name="item_bedst" inherits-from="item_constructed"/>

items.item_chairst

<class-type type-name="item_chairst"
    inherits-from="item_constructed"/>

items.item_chainst

<class-type type-name="item_chainst"
    inherits-from="item_constructed"/>

items.item_flaskst

<class-type type-name="item_flaskst"
    inherits-from="item_constructed"/>

items.item_gobletst

<class-type type-name="item_gobletst"
    inherits-from="item_constructed"/>

items.item_windowst

<class-type type-name="item_windowst"
    inherits-from="item_constructed"/>

items.item_cagest

<class-type type-name="item_cagest" inherits-from="item_constructed"/>

items.item_bucketst

<class-type type-name="item_bucketst"
    inherits-from="item_constructed"/>

items.item_animaltrapst

<class-type type-name="item_animaltrapst"
    inherits-from="item_constructed"/>

items.item_tablest

<class-type type-name="item_tablest"
    inherits-from="item_constructed"/>

items.item_coffinst

<class-type type-name="item_coffinst"
    inherits-from="item_constructed"/>

items.item_boxst

<class-type type-name="item_boxst" inherits-from="item_constructed"/>

items.item_armorstandst

<class-type type-name="item_armorstandst"
    inherits-from="item_constructed"/>

items.item_weaponrackst

<class-type type-name="item_weaponrackst"
    inherits-from="item_constructed"/>

items.item_cabinetst

<class-type type-name="item_cabinetst"
    inherits-from="item_constructed"/>

items.item_amuletst

<class-type type-name="item_amuletst"
    inherits-from="item_constructed"/>

items.item_scepterst

<class-type type-name="item_scepterst"
    inherits-from="item_constructed"/>

items.item_crownst

<class-type type-name="item_crownst"
    inherits-from="item_constructed"/>

items.item_ringst

<class-type type-name="item_ringst" inherits-from="item_constructed"/>

items.item_earringst

<class-type type-name="item_earringst"
    inherits-from="item_constructed"/>

items.item_braceletst

<class-type type-name="item_braceletst"
    inherits-from="item_constructed"/>

items.item_anvilst

<class-type type-name="item_anvilst"
    inherits-from="item_constructed"/>

items.item_backpackst

<class-type type-name="item_backpackst"
    inherits-from="item_constructed"/>

items.item_quiverst

<class-type type-name="item_quiverst"
    inherits-from="item_constructed"/>

items.item_catapultpartsst

<class-type type-name="item_catapultpartsst"
    inherits-from="item_constructed"/>

items.item_ballistapartsst

<class-type type-name="item_ballistapartsst"
    inherits-from="item_constructed"/>

items.item_trappartsst

<class-type type-name="item_trappartsst"
    inherits-from="item_constructed"/>

items.item_pipe_sectionst

<class-type type-name="item_pipe_sectionst"
    inherits-from="item_constructed"/>

items.item_hatch_coverst

<class-type type-name="item_hatch_coverst"
    inherits-from="item_constructed"/>

items.item_gratest

<class-type type-name="item_gratest"
    inherits-from="item_constructed"/>

items.item_quernst

<class-type type-name="item_quernst"
    inherits-from="item_constructed"/>

items.item_millstonest

<class-type type-name="item_millstonest"
    inherits-from="item_constructed"/>

items.item_splintst

<class-type type-name="item_splintst"
    inherits-from="item_constructed"/>

items.item_crutchst

<class-type type-name="item_crutchst"
    inherits-from="item_constructed"/>

items.item_traction_benchst

<class-type type-name="item_traction_benchst"
    inherits-from="item_constructed"/>

items.item_instrumentst

<class-type type-name="item_instrumentst"
    inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_instrumentst"/>
</class-type>

items.item_toyst

<class-type type-name="item_toyst" inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_toyst"/>
</class-type>

items.item_armorst

<class-type type-name="item_armorst" inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_armorst"/>
</class-type>

items.item_shoesst

<class-type type-name="item_shoesst" inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_shoesst"/>
</class-type>

items.item_shieldst

<class-type type-name="item_shieldst"
    inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_shieldst"/>
</class-type>

items.item_helmst

<class-type type-name="item_helmst" inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_helmst"/>
</class-type>

items.item_glovesst

<class-type type-name="item_glovesst"
    inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_glovesst"/>
  <df-flagarray name="handedness">
    1 right, 2 left
  </df-flagarray>
</class-type>

items.item_pantsst

<class-type type-name="item_pantsst" inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_pantsst"/>
</class-type>

items.item_siegeammost

<class-type type-name="item_siegeammost"
    inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_siegeammost"/>
  <int32_t name="sharpness" init-value="10000">
    v0.40.15
  </int32_t>
</class-type>

items.item_weaponst

<class-type type-name="item_weaponst"
    inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_weaponst"/>
  <int32_t name="sharpness"/>
</class-type>

items.item_ammost

<class-type type-name="item_ammost" inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_ammost"/>
  <int32_t name="sharpness"/>
</class-type>

items.item_trapcompst

<class-type type-name="item_trapcompst"
    inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_trapcompst"/>
  <int32_t name="sharpness"/>
</class-type>

items.item_toolst

<class-type type-name="item_toolst" inherits-from="item_constructed">
  <pointer name="subtype" type-name="itemdef_toolst"/>
  <int32_t name="sharpness"/>
  <compound name="stockpile" type-name="item_stockpile_ref"/>
  <int32_t name="vehicle_id" ref-target="vehicle">
    v0.34.08
  </int32_t>
</class-type>

items.item_stockpile_ref

<struct-type type-name="item_stockpile_ref">
  <int32_t name="id" ref-target="building"/>
  <int16_t name="x"/>
  <int16_t name="y"/>
</struct-type>

items.item_barrelst

<class-type type-name="item_barrelst"
    inherits-from="item_constructed">
  <compound name="stockpile" type-name="item_stockpile_ref"/>
</class-type>

items.item_binst

<class-type type-name="item_binst" inherits-from="item_constructed">
  <compound name="stockpile" type-name="item_stockpile_ref"/>
</class-type>

items.item_gemst

<class-type type-name="item_gemst" inherits-from="item_constructed">
  <int32_t name="shape" ref-target="descriptor_shape"/>
</class-type>

items.item_statuest

<class-type type-name="item_statuest"
    inherits-from="item_constructed">
  <compound name="image" type-name="art_image_ref"/>
  <stl-string name="description"/>
</class-type>

items.item_figurinest

<class-type type-name="item_figurinest"
    inherits-from="item_constructed">
  <compound name="image" type-name="art_image_ref"/>
  <stl-string name="description"/>
</class-type>

items.item_slabst

<class-type type-name="item_slabst" inherits-from="item_constructed">
  <stl-string name="description"/>
  <int32_t name="topic" ref-target="historical_figure">
    or interaction id for secrets?
  </int32_t>
  <enum base-type="int16_t" type-name="slab_engraving_type"
      name="engraving_type"/>
</class-type>

items.item_orthopedic_castst

<class-type type-name="item_orthopedic_castst"
    inherits-from="item_constructed">
  <stl-string name="body_part"/>
  <stl-string name="material"/>
</class-type>

items.item_coinst

<class-type type-name="item_coinst" inherits-from="item_constructed">
  <int16_t name="coin_batch" ref-target="coin_batch"/>
</class-type>

items.item_totemst

<class-type type-name="item_totemst" inherits-from="item_constructed">
  <int16_t name="race" ref-target="creature_raw"/>
  <int16_t name="caste" ref-target="caste_raw" aux-value="$$.race"/>
  <int16_t name="body_part_idx"/>
</class-type>

items.item_clothst

<class-type type-name="item_clothst" inherits-from="item_constructed">
  <int32_t name="dimension" init-value="10000"/>
</class-type>

items.item_bookst

<class-type type-name="item_bookst" inherits-from="item_constructed">
  <stl-string name="title"/>
</class-type>

items.item_ballistaarrowheadst

<class-type type-name="item_ballistaarrowheadst"
    inherits-from="item_actual">
  <int16_t name="mat_type" ref-target="material"
      aux-value="$$.mat_index"/>
  <int32_t name="mat_index"/>
  <int32_t name="sharpness" init-value="10000">
    v0.40.15
  </int32_t>
</class-type>

items.item_sheetst

<class-type type-name="item_sheetst" inherits-from="item_constructed">
  <int32_t/>
  <int32_t/>
</class-type>