| Field | Type | Offset | Description | Notes |
|---|---|---|---|---|
| sfx_id | s32 | 0x0 | The SFX ID of this particular bullet. Sometimes unlisted here and sometimes provided by the EMEVD. | |
| spawn_location | u8 | 0x4 | Where the bullet will spawn in relation to the parent. | This field uses the following enum: SpawnLocation |
| spawn_direction | u8 | 0x5 | Affects how the bullet is spawned. | This field uses the following enum: SpawnDirection |
| online_visibility | u8 | 0x6 | This field is a boolean. | |
| spawn_flag_1 | u8 | 0x7 | ||
| relative_z_coord | f32 | 0x8 | Offset the bullet's spawn location. +Z is above the player, -Z is below the player. | |
| relative_y_coord | f32 | 0xc | Offset the bullet's spawn location. +Y is to the right of the player, -Y is to the left of the player. | |
| relative_x_coord | f32 | 0x10 | Offset the bullet's spawn location. +X is in front of the player, -X is behind the player. | |
| relative_vertical_angle | f32 | 0x14 | In radians. | |
| relative_horizontal_angle | f32 | 0x18 | In radians. | |
| lockon_vertical_angle | f32 | 0x1c | In radians. | |
| lockon_horizontal_angle | f32 | 0x20 | In radians. | |
| vertical_angle_randomizer | f32 | 0x24 | In radians. Applies random value between 0 and the specified angle here on shoot to the vertical shoot angle. | |
| horizontal_angle_randomizer | f32 | 0x28 | In radians. Applies random value between 0 and the specified angle here on shoot to the horizontal shoot angle. | |
| Unk00 | u8 | 0x2c | Related to lock-on | |
| Unk01 | u8 | 0x2d | Related to lock-on | |
| shoot_once_count | u8 | 0x2e | ||
| shoot_sequential_count | u8 | 0x2f | ||
| shoot_once_relative_vertical_angle | f32 | 0x30 | ||
| shoot_once_relative_horizontal_angle | f32 | 0x34 | ||
| shoot_sequential_interval | f32 | 0x38 | ||
| shoot_sequential_relative_vertical_angle | f32 | 0x3c | ||
| shoot_sequential_relative_horizontal_angle | f32 | 0x40 | ||
| Unk04 | u8 | 0x44 | ||
| Unk05 | u8 | 0x45 | ||
| Unk06 | u8 | 0x46 | ||
| Unk07 | u8 | 0x47 | ||
| max_life | f32 | 0x48 | ||
| initial_horizontal_velocity | f32 | 0x4c | ||
| horizontal_acceleration_start_delay | f32 | 0x50 | ||
| horizontal_target_velocity | f32 | 0x54 | ||
| horizontal_max_velocity | f32 | 0x58 | ||
| initial_vertical_velocity | f32 | 0x5c | ||
| vertical_acceleration_start_delay | f32 | 0x60 | ||
| vertical_target_velocity | f32 | 0x64 | ||
| vertical_max_velocity | f32 | 0x68 | ||
| initial_tan_vertical_velocity | f32 | 0x6c | ||
| tan_vertical_acceleration_start_delay | f32 | 0x70 | ||
| tan_vertical_target_velocity | f32 | 0x74 | ||
| tan_vertical_max_velocity | f32 | 0x78 | ||
| initial_tan_horizontal_velocity | f32 | 0x7c | ||
| tan_horizontal_acceleration_start_delay | f32 | 0x80 | ||
| tan_horizontal_target_velocity | f32 | 0x84 | ||
| tan_horizontal_max_velocity | f32 | 0x88 | ||
| Unk08 | f32 | 0x8c | ||
| max_angle_change | f32 | 0x90 | ||
| max_tracking_angle_change | f32 | 0x94 | In radians. | |
| max_tracking_time | f32 | 0x98 | ||
| Unk09 | f32 | 0x9c | ||
| Unk10 | f32 | 0xa0 | ||
| Unk11 | f32 | 0xa4 | ||
| Unk12 | f32 | 0xa8 | ||
| Unk13 | f32 | 0xac | ||
| hit_character | u8 | 0xb0 | This field is a boolean. | |
| hit_wall | u8 | 0xb1 | This field is a boolean. | |
| hit_floor | u8 | 0xb2 | This field is a boolean. | |
| hit_water | u8 | 0xb3 | This field is a boolean. | |
| shoot_sfx_id | s32 | 0xb4 | SFX to play on shoot. | |
| Unk14 | u8 | 0xb8 | ||
| Unk15 | u8 | 0xb9 | ||
| Unk16 | u8 | 0xba | ||
| Unk17 | u8 | 0xbb | ||
| hit_sfx_id | s32 | 0xbc | SFX to play when the bullet collides with something. | |
| expire_sfx_id | s32 | 0xc0 | SFX to play when the bullet expires. | |
| sfx_duration_on_expiration | f32 | 0xc4 | ||
| Unk18 | f32 | 0xc8 | ||
| bullet_attach_param_id | s32 | 0xcc | This field refers to the following params: BulletAttachParam | |
| Unk19 | s32 | 0xd0 | ||
| child_bullet_1_bullet_id | s32 | 0xd4 | This field refers to the following params: BulletParam, EnemyBulletParam | |
| child_bullet_1_damage_id | s32 | 0xd8 | This field refers to the following params: EnemyDamageParam, PlayerDamageParam, SystemDamageParam | |
| child_bullet_2_bullet_id | s32 | 0xdc | This field refers to the following params: BulletParam, EnemyBulletParam | |
| child_bullet_2_damage_id | s32 | 0xe0 | This field refers to the following params: EnemyDamageParam, PlayerDamageParam, SystemDamageParam | |
| child_bullet_3_bullet_id | s32 | 0xe4 | This field refers to the following params: BulletParam, EnemyBulletParam | |
| child_bullet_3_damage_id | s32 | 0xe8 | This field refers to the following params: EnemyDamageParam, PlayerDamageParam, SystemDamageParam | |
| spawn_child_bullet_on_hit | u8 | 0xec | This field is a boolean. | |
| spawn_child_bullet_on_expire | u8 | 0xed | This field is a boolean. | |
| spawn_child_bullet_on_unknown | u8 | 0xee | This field is a boolean. | |
| spawn_child_bullet_on_alive | u8 | 0xef | This field is a boolean. | |
| Unk20 | s32 | 0xf0 | ||
| Unk21 | s32 | 0xf4 | ||
| Unk22 | s32 | 0xf8 | ||
| Unk23 | s32 | 0xfc | ||
| Unk24 | u8 | 0x100 | ||
| Unk25 | u8 | 0x101 | ||
| Unk26 | u8 | 0x102 | ||
| Unk27 | u8 | 0x103 | ||
| Unk28 | u8 | 0x104 | ||
| Unk29 | u8 | 0x105 | ||
| Unk30 | u8 | 0x106 | ||
| Unk31 | u8 | 0x107 | ||
| Unk32 | f32 | 0x108 | ||
| Unk33 | f32 | 0x10c | ||
| Unk34 | f32 | 0x110 | ||
| Unk35 | s32 | 0x114 | ||
| Unk36 | s32 | 0x118 | ||
| Unk37 | f32 | 0x11c | ||
| Unk38 | f32 | 0x120 | ||
| Unk39 | f32 | 0x124 | ||
| child_bullet_spawn_delay | f32 | 0x128 | ||
| Unk40 | f32 | 0x12c | ||
| Unk41 | s32 | 0x130 | ||
| Unk42 | s32 | 0x134 | ||
| Unk43 | s32 | 0x138 | ||
| Unk44 | s32 | 0x13c |
| Option | Description | Notes |
|---|---|---|
0 | Default | |
1 | Shooter Feet | |
2 | Parent |
| Option | Description | Notes |
|---|---|---|
0 | Default | |
1 | Forward | |
2 | Attached | |
3 | Forward - Fast | |
5 | Forward - Child |