Fixed rarity of kills suicide, thrusmoke and for some weapons

This commit is contained in:
s1lentq 2023-12-23 02:43:42 +07:00
parent 28e2bc45f6
commit 0e68bedf24

View File

@ -3088,7 +3088,7 @@ void CHalfLifeMultiplay::CheckLevelInitialized()
// This determines the maximum number of players allowed on each
m_iSpawnPointCount_Terrorist = UTIL_CountEntities("info_player_deathmatch");
m_iSpawnPointCount_CT = UTIL_CountEntities("info_player_start");
#ifdef REGAMEDLL_FIXES
#ifdef REGAMEDLL_FIXES
m_bMapHasCameras = UTIL_CountEntities("trigger_camera");
#endif
m_bLevelInitialized = true;
@ -3582,7 +3582,7 @@ void CHalfLifeMultiplay::ClientDisconnected(edict_t *pClient)
{
pPlayer->DropPlayerItem("weapon_c4");
}
if (pPlayer->m_bHasDefuser)
{
#ifdef REGAMEDLL_FIXES
@ -5250,26 +5250,32 @@ int CHalfLifeMultiplay::GetRarityOfKill(CBaseEntity *pKiller, CBasePlayer *pVict
if (pVictim->m_bHeadshotKilled)
iRarity |= KILLRARITY_HEADSHOT;
// The killer player kills the victim through the walls
if (pVictim->GetDmgPenetrationLevel() > 0)
iRarity |= KILLRARITY_PENETRATED;
// The killer player was blind
if (pKiller && pKiller->IsPlayer())
CBasePlayer *pKillerPlayer = static_cast<CBasePlayer *>(pKiller);
if (pKillerPlayer && pKillerPlayer->IsPlayer())
{
CBasePlayer *pKillerPlayer = static_cast<CBasePlayer *>(pKiller);
if (pKillerPlayer->IsBlind())
iRarity |= KILLRARITY_KILLER_BLIND;
// The killer player kills the victim with a sniper rifle with no scope
WeaponClassType weaponClass = AliasToWeaponClass(killerWeaponName);
if (weaponClass == WEAPONCLASS_SNIPERRIFLE && pKillerPlayer->m_iClientFOV == DEFAULT_FOV)
iRarity |= KILLRARITY_NOSCOPE;
if (pKillerPlayer != pVictim
&& weaponClass != WEAPONCLASS_NONE
&& weaponClass != WEAPONCLASS_KNIFE
&& weaponClass != WEAPONCLASS_GRENADE)
{
// The killer player kills the victim through the walls
if (pVictim->GetDmgPenetrationLevel() > 0)
iRarity |= KILLRARITY_PENETRATED;
// The killer player kills the victim through smoke
const Vector inEyePos = pKillerPlayer->EyePosition();
if (TheCSBots()->IsLineBlockedBySmoke(&inEyePos, &pVictim->pev->origin))
iRarity |= KILLRARITY_THRUSMOKE;
if (pKillerPlayer->IsBlind())
iRarity |= KILLRARITY_KILLER_BLIND;
// The killer player kills the victim with a sniper rifle with no scope
if (weaponClass == WEAPONCLASS_SNIPERRIFLE && pKillerPlayer->m_iClientFOV == DEFAULT_FOV)
iRarity |= KILLRARITY_NOSCOPE;
// The killer player kills the victim through smoke
const Vector inEyePos = pKillerPlayer->EyePosition();
if (TheCSBots()->IsLineBlockedBySmoke(&inEyePos, &pVictim->pev->origin))
iRarity |= KILLRARITY_THRUSMOKE;
}
// Calculate # of unanswered kills between killer & victim
// This is plus 1 as this function gets called before the stat is updated