<data-definition>
    <struct-type type-name='proj_list_link'>
        <pointer name='item' type-name='projectile'/>
        <pointer name='prev' type-name='proj_list_link'/>
        <pointer name='next' type-name='proj_list_link'/>
    </struct-type>

    <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'/>

        <int16_t name='origin_x'/>
        <int16_t name='origin_y'/>
        <int16_t name='origin_z'/>
        <int16_t name='target_x'/>
        <int16_t name='target_y'/>
        <int16_t name='target_z'/>
        <int16_t name='cur_x'/>
        <int16_t name='cur_y'/>
        <int16_t name='cur_z'/>
        <int16_t name='prev_x'/>
        <int16_t name='prev_y'/>
        <int16_t name='prev_z'/>

        <int32_t name='distance_flown'/>

        <int32_t name='unk14'/>
        <int32_t name='unk15'/>
        <int32_t name='unk16'/>

        <bool name='collided' comment='or falling?'/>

        <int16_t name='fall_counter' comment='counts down from delay to 0, then it moves'/>
        <int16_t name='fall_delay'/>

        <int32_t name='unk20'/>
        <int32_t name='unk21'/>
        <int32_t name='unk22'/>
        <int32_t name='unk23'/>
    </class-type>

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

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

    <class-type type-name='proj_magicst' inherits-from='projectile'>
        <pointer name='unk' comment='?'/>
    </class-type>
</data-definition>

<!--
Local Variables:
indent-tabs-mode: nil
nxml-child-indent: 4
End:
-->