From 153a711955672066a9a305ac40798ca916106cdb Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Wed, 6 Mar 2024 19:03:26 -0800 Subject: [PATCH] HLMultiplayerRules: Support death animation variations. --- src/server/gamerules_multiplayer.qc | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/server/gamerules_multiplayer.qc b/src/server/gamerules_multiplayer.qc index b3baeef..87171f0 100644 --- a/src/server/gamerules_multiplayer.qc +++ b/src/server/gamerules_multiplayer.qc @@ -133,7 +133,32 @@ HLMultiplayerRules::PlayerDeath(NSClientPlayer pl) float gibStrength = g_dmg_iDamage * 2.0f; BreakModel_Entity(pl, gibDir, gibStrength); } else { - FX_Corpse_Spawn((player)pl, ANIM_DIESIMPLE); + float deathAnimation; + + switch (g_dmg_iHitBody) { + case BODY_HEAD: + deathAnimation = ANIM_DIEHEADSHOT; + break; + case BODY_CHEST: + deathAnimation = ANIM_DIESPIN; + break; + case BODY_STOMACH: + deathAnimation = ANIM_DIEGUTSHOT; + break; + default: + bool isFacing = pl.IsFacingPosition(g_dmg_vecLocation); + deathAnimation = ANIM_DIESIMPLE; + + if (isFacing == false) { + deathAnimation = ANIM_DIEFORWARD; + } else { + deathAnimation = random() < 0.5 ? ANIM_DIEBACKWARDS1 : ANIM_DIEBACKWARDS1; + } + + break; + } + + FX_Corpse_Spawn((player)pl, deathAnimation); } /* now let's make the real client invisible */ @@ -142,7 +167,7 @@ HLMultiplayerRules::PlayerDeath(NSClientPlayer pl) pl.gflags &= ~GF_FLASHLIGHT; pl.gflags &= ~GF_EGONBEAM; - Sound_Play(pl, CHAN_AUTO, "Player.Death"); + pl.StartSoundDef("Player.Death", CHAN_AUTO, true); /* force respawn */ if (cvar("mp_forcerespawn") == 1) {