Skip to content

Commit

Permalink
Fixed rarity of kills suicide, thrusmoke and for some weapons
Browse files Browse the repository at this point in the history
  • Loading branch information
s1lentq committed Dec 22, 2023
1 parent 28e2bc4 commit 0e68bed
Showing 1 changed file with 24 additions and 18 deletions.
42 changes: 24 additions & 18 deletions regamedll/dlls/multiplay_gamerules.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -3582,7 +3582,7 @@ void CHalfLifeMultiplay::ClientDisconnected(edict_t *pClient)
{
pPlayer->DropPlayerItem("weapon_c4");
}

if (pPlayer->m_bHasDefuser)
{
#ifdef REGAMEDLL_FIXES
Expand Down Expand Up @@ -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;

if (pKillerPlayer->IsBlind())
iRarity |= KILLRARITY_KILLER_BLIND;

// The killer player kills the victim through smoke
const Vector inEyePos = pKillerPlayer->EyePosition();
if (TheCSBots()->IsLineBlockedBySmoke(&inEyePos, &pVictim->pev->origin))
iRarity |= KILLRARITY_THRUSMOKE;
// 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
Expand Down

0 comments on commit 0e68bed

Please sign in to comment.