projectile

projectile.projectile_type

<enum-type type-name="projectile_type">
  <enum-item name="Item"/>
  <enum-item name="Unit"/>
  <enum-item name="Magic"/>
</enum-type>

projectile.projectile_flags

<bitfield-type type-name="projectile_flags">
  <flag-bit name="no_impact_destroy"/>
  <flag-bit name="has_hit_ground"/>
  <flag-bit name="bouncing"/>
  <flag-bit name="high_flying"/>
  <flag-bit name="piercing"/>
  <flag-bit name="to_be_deleted"/>
  <flag-bit name="unk6"/>
  <flag-bit name="unk7"/>
  <flag-bit name="parabolic"/>
  <flag-bit name="unk9"/>
  <flag-bit name="unk10"/>
  <flag-bit name="no_collide"/>
  <flag-bit name="safe_landing"/>
</bitfield-type>

projectile.projectile

<class-type type-name="projectile" original-name="projst"
    key-field="id">
  <pointer name="link" type-name="proj_list_link"/>
  <int32_t name="id"/>
  <pointer name="firer" type-name="unit"/>
  <compound name="origin_pos" type-name="coord"/>
  <compound name="target_pos" type-name="coord"/>
  <compound name="cur_pos" type-name="coord"/>
  <compound name="prev_pos" type-name="coord"/>
  <int32_t name="distance_flown"/>
  <int32_t name="fall_threshold"/>
  <int32_t name="min_hit_distance"/>
  <int32_t name="min_ground_distance"/>
  <compound name="flags" type-name="projectile_flags"/>
  <int16_t name="fall_counter">
    counts down from delay to 0, then it moves
  </int16_t>
  <int16_t name="fall_delay"/>
  <int32_t name="hit_rating"/>
  <int32_t name="unk21"/>
  <int32_t name="unk22"/>
  <int32_t name="bow_id" ref-target="item"/>
  <int32_t name="unk_item_id" ref-target="item"/>
  <int32_t name="unk_unit_id" ref-target="unit"/>
  <int32_t name="unk_v40_1">
    v0.40.01; uninitialized+saved
  </int32_t>
  <int32_t name="pos_x"/>
  <int32_t name="pos_y"/>
  <int32_t name="pos_z"/>
  <int32_t name="speed_x"/>
  <int32_t name="speed_y"/>
  <int32_t name="speed_z"/>
  <int32_t name="accel_x"/>
  <int32_t name="accel_y"/>
  <int32_t name="accel_z"/>
  <virtual-methods>
    <vmethod ret-type="projectile_type" name="getType"/>
    <vmethod ret-type="bool" name="checkImpact">
      <bool name="noDamageFloor"/>
    </vmethod>
    <vmethod ret-type="bool" name="checkMovement"/>
    <vmethod name="read_file">
      <pointer name="file" type-name="file_compressorst"/>
      <int32_t name="loadversion"/>
    </vmethod>
    <vmethod name="write_file">
      <pointer name="file" type-name="file_compressorst"/>
    </vmethod>
    <vmethod>
      <pointer/>
    </vmethod>
    <vmethod ret-type="bool" name="isObjectLost"/>
    <vmethod is-destructor="true"/>
  </virtual-methods>
</class-type>

projectile.proj_itemst

<class-type type-name="proj_itemst" inherits-from="projectile">
  <pointer name="item" type-name="item"/>
</class-type>

projectile.proj_unitst

<class-type type-name="proj_unitst" inherits-from="projectile">
  <pointer name="unit" type-name="unit">
    ?
  </pointer>
</class-type>

projectile.proj_magicst

<class-type type-name="proj_magicst" inherits-from="projectile">
  <pointer name="unk">
    ?
  </pointer>
</class-type>