rendered paste body// Hooked for catching kills and revive spree
void eth_CG_EntityEvent(centity_t *cent, vec3_t position) {
entityState_t *es = ¢->currentState;;
int event = es->event & ~EV_EVENT_BITS;
switch (event) {
case EV_FIRE_WEAPON:
if( seth.value[VAR_RECOIL] == 2)
if (es->number == eth.cg_clientNum) {
syscall_CG_S_StartLocalSound(eth.cgs_media_sndLimboSelect, CHAN_LOCAL_SOUND);
return;
}
break;
case EV_OBITUARY:
// Don't count kills in warmup.
if (eth.cgs_gamestate != GS_PLAYING)
break;
// For now this way, report if it doesen't work on some mods
int target, attacker;
if (eth.mod->type == MOD_ETPRO) {
target = es->time;
attacker = es->time2;
} else {
target = es->otherEntityNum;
attacker = es->otherEntityNum2;
}
// If we do a selfkill or someone kills us, reset killing spree
if (target == eth.cg_clientNum) {
if( attacker > MAX_CLIENTS )
strncpy( eth.KillerName, "world" ,sizeof(eth.KillerName) );
else
strncpy( eth.KillerName, eth.clientInfo[attacker].name,sizeof(eth.KillerName) );
if (seth.value[VAR_KILLSPAM] && attacker != target)
deathSpam();
if (seth.value[VAR_KILLSPAM] && attacker == target)
selfKillSpam();
eth.killCountNoDeath = 0;
eth.killSpreeCount = 0;
eth.reviveSpree = 0;
break;
// Increase killcount only if we're the attacker and if we killed a player from the opposite team
} else if (attacker == eth.cg_clientNum && eth.clientInfo[target].team != eth.clientInfo[eth.cg_clientNum].team) {
strncpy(eth.VictimName, eth.clientInfo[target].name, sizeof(eth.VictimName));
eth.killCount++;
eth.killCountNoDeath++;
eth.autoDemoKillCount++; // Backup killcount for auto-record demo
// If not a killing spree
if ((eth.cg_time - eth.lastKillTime) > (SPREE_TIME * 1000)) {
eth.firstKillSpreeTime = eth.cg_time;
eth.killSpreeCount = 1;
} else {
eth.killSpreeCount++;
}
eth.lastKillTime = eth.cg_time;
if (eth.killSpreeCount > 1)
playSpreeSound();
if (seth.value[VAR_KILLSPAM])
killSpam();
}
break;
default:
break;
}
eth.CG_EntityEvent(cent, position);
}