From 8d740f470fb5ed5f63a3d59d3867189626e285b9 Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Sat, 21 Apr 2018 14:43:40 +0200 Subject: Corpses can take damage now. --- src/game/unit_soldier.cpp | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) (limited to 'src/game/unit_soldier.cpp') 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((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); -- cgit