summaryrefslogtreecommitdiff
path: root/src/game/unit_soldier.cpp
diff options
context:
space:
mode:
authorPaweł Redman <pawel.redman@gmail.com>2018-04-01 15:03:23 +0200
committerPaweł Redman <pawel.redman@gmail.com>2018-04-01 15:04:02 +0200
commit30c5c419aedd0e5aae92be6e0eee83f0b6690c6e (patch)
treef0e37219c6bfd88e6fab44fbfc6319bab650eeb8 /src/game/unit_soldier.cpp
parent020e91ca69f35329eae518f3fe92afba2e117d06 (diff)
Add the replicator (not finished).
Placeholder sounds from Tremulous, as usual.
Diffstat (limited to 'src/game/unit_soldier.cpp')
-rw-r--r--src/game/unit_soldier.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/game/unit_soldier.cpp b/src/game/unit_soldier.cpp
index e7d3849..4112d9a 100644
--- a/src/game/unit_soldier.cpp
+++ b/src/game/unit_soldier.cpp
@@ -147,8 +147,13 @@ void unit_soldier_t::on_think(void)
void unit_soldier_t::on_death(void)
{
- render_size[0] = v2f_t(-0.75f, -0.5f);
- render_size[1] = v2f_t(+0.75f, +0.5f);
+ if (health >= -10) {
+ render_size[0] = v2f_t(-0.75f, -0.5f);
+ render_size[1] = v2f_t(+0.75f, +0.5f);
+ } else {
+ assets::soldier.gib_sound.play_3d(x);
+ }
+
render_layer = -1;
cmodel.cflags = CF_BACKGROUND;
place(world, x);
@@ -200,8 +205,14 @@ void unit_soldier_t::render_to(render::state_t *render)
render->render(game->now * 10, body, render_bounds, body_angle);
render->render(game->now * 10, &assets::soldier.head_idle, render_bounds, body_angle);
- } else
- render->render(game->now * 10, &assets::soldier.dead, render_bounds);
+ } else {
+ float phase = clamp<float>((game->now - death_time) * 5, 0, 0.9);
+
+ if (health < -10)
+ render->render(phase, &assets::soldier.gibbing, render_bounds);
+ else
+ render->render(phase, &assets::soldier.dead, render_bounds);
+ }
unit_t::render_to(render);
}