diff options
author | Paweł Redman <pawel.redman@gmail.com> | 2018-04-21 14:43:40 +0200 |
---|---|---|
committer | Paweł Redman <pawel.redman@gmail.com> | 2018-04-21 14:43:40 +0200 |
commit | 8d740f470fb5ed5f63a3d59d3867189626e285b9 (patch) | |
tree | 30123091126a86c82f081de10f3ec7e0f92a0a6c /src/game/unit_soldier.cpp | |
parent | 7c56f59aedddb6bb18d85e778a3acbef16b4c54f (diff) |
Corpses can take damage now.
Diffstat (limited to 'src/game/unit_soldier.cpp')
-rw-r--r-- | src/game/unit_soldier.cpp | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/src/game/unit_soldier.cpp b/src/game/unit_soldier.cpp index 0ffe19f..e41278e 100644 --- a/src/game/unit_soldier.cpp +++ b/src/game/unit_soldier.cpp @@ -211,19 +211,36 @@ void unit_soldier_t::on_think(void) void unit_soldier_t::on_damage(unit_t *attacker) { - assets::soldier.pain.play_3d(x); -} + if (health < -30) { + assets::fx.gibbing.play_3d(x); + game->deletion_list.insert(this); + return; + } else if (health < -10) { + render_size[0] = v2f_t(-0.5f, -1.2f); + render_size[1] = v2f_t(+0.5f, +0.3f); -void unit_soldier_t::on_death(void) -{ - if (health >= -10) { + if (!gibbed) + assets::fx.gibbing.play_3d(x); + else + assets::fx.corpse_hit.play_3d(x); + + place(world, x); + gibbed = true; + } else if (health <= 0) { render_size[0] = v2f_t(-0.75f, -0.5f); render_size[1] = v2f_t(+0.75f, +0.5f); - assets::soldier.death.play_3d(x); - } else { - assets::soldier.gib_sound.play_3d(x); - } + if (!dead) + assets::soldier.death.play_3d(x); + else + assets::fx.corpse_hit.play_3d(x); + + place(world, x); + } else + assets::soldier.pain.play_3d(x); +} +void unit_soldier_t::on_death(void) +{ render_layer = render::LAYER_FLAT; cmodel.cflags = CF_BACKGROUND; place(world, x); @@ -278,7 +295,7 @@ void unit_soldier_t::render_to(render::state_t *render) } else { float phase = clamp<float>((game->now - death_time) * 5, 0, 0.9); - if (health < -10) + if (gibbed) render->render(phase, &assets::soldier.gibbing, render_bounds); else render->render(phase, &assets::soldier.dead, render_bounds); |