From ab38461c334211c53a78c0edc05b6759402177a4 Mon Sep 17 00:00:00 2001 From: Roman Chistokhodov Date: Mon, 6 Jun 2022 18:51:03 +0300 Subject: [PATCH] Implement 'corpsephysics' cvar. Issue #190 (#255) --- dlls/combat.cpp | 15 +++++++++++---- dlls/game.cpp | 2 ++ dlls/game.h | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/dlls/combat.cpp b/dlls/combat.cpp index 1bd5a5bf..512c8996 100644 --- a/dlls/combat.cpp +++ b/dlls/combat.cpp @@ -29,6 +29,7 @@ #include "animation.h" #include "weapons.h" #include "func_break.h" +#include "game.h" extern DLL_GLOBAL Vector g_vecAttackDir; extern DLL_GLOBAL int g_iSkillLevel; @@ -514,10 +515,16 @@ void CBaseMonster::BecomeDead( void ) // make the corpse fly away from the attack vector pev->movetype = MOVETYPE_TOSS; - //pev->flags &= ~FL_ONGROUND; - //pev->origin.z += 2.0f; - //pev->velocity = g_vecAttackDir * -1.0f; - //pev->velocity = pev->velocity * RANDOM_FLOAT( 300.0f, 400.0f ); + if (corpsephysics.value && + // affect only dying monsters, not initially dead ones + m_IdealMonsterState == MONSTERSTATE_DEAD) + { + pev->flags &= ~FL_ONGROUND; + pev->origin.z += 2.0f; + pev->velocity = g_vecAttackDir * -1.0f; + pev->velocity = pev->velocity * RANDOM_FLOAT( 300.0f, 400.0f ); + } + } BOOL CBaseMonster::ShouldGibMonster( int iGib ) diff --git a/dlls/game.cpp b/dlls/game.cpp index 57defc57..690256c2 100644 --- a/dlls/game.cpp +++ b/dlls/game.cpp @@ -37,6 +37,7 @@ cvar_t chargerfix = { "chargerfix", "0", FCVAR_SERVER }; cvar_t satchelfix = { "satchelfix", "0", FCVAR_SERVER }; cvar_t explosionfix = { "explosionfix", "0", FCVAR_SERVER }; cvar_t monsteryawspeedfix = { "monsteryawspeedfix", "1", FCVAR_SERVER }; +cvar_t corpsephysics = { "corpsephysics", "0", FCVAR_SERVER }; cvar_t forcerespawn = { "mp_forcerespawn","1", FCVAR_SERVER }; cvar_t flashlight = { "mp_flashlight","0", FCVAR_SERVER }; cvar_t aimcrosshair = { "mp_autocrosshair","1", FCVAR_SERVER }; @@ -489,6 +490,7 @@ void GameDLLInit( void ) CVAR_REGISTER( &satchelfix ); CVAR_REGISTER( &explosionfix ); CVAR_REGISTER( &monsteryawspeedfix ); + CVAR_REGISTER( &corpsephysics ); CVAR_REGISTER( &forcerespawn ); CVAR_REGISTER( &flashlight ); CVAR_REGISTER( &aimcrosshair ); diff --git a/dlls/game.h b/dlls/game.h index 17c15219..54e3281d 100644 --- a/dlls/game.h +++ b/dlls/game.h @@ -32,6 +32,7 @@ extern cvar_t chargerfix; extern cvar_t satchelfix; extern cvar_t explosionfix; extern cvar_t monsteryawspeedfix; +extern cvar_t corpsephysics; extern cvar_t forcerespawn; extern cvar_t flashlight; extern cvar_t aimcrosshair;