As I check in gamerules.cpp, it don't have to be DEAD_DEAD to trigger round end, only need to be not DEAD_NO.
Maybe try DEAD_DYING or DEAD_RESPAWNABLE after spawn?
Reference
Spoiler
Code:
void CHalfLifeMultiplay::InitializePlayerCounts(int &NumAliveTerrorist, int &NumAliveCT, int &NumDeadTerrorist, int &NumDeadCT){
NumAliveTerrorist = NumAliveCT = NumDeadCT = NumDeadTerrorist =0;
m_iNumTerrorist = m_iNumCT = m_iNumSpawnableTerrorist = m_iNumSpawnableCT =0;
m_iHaveEscaped =0;
// initialize count dead/alive players// Count how many dead players there are on each team.
CBaseEntity *pEntity = nullptr;
while((pEntity = UTIL_FindEntityByClassname(pEntity, "player"))){if(FNullEnt(pEntity->edict()))break;
if(pEntity->IsDormant())continue;
CBasePlayer *pPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
switch(pPlayer->m_iTeam){case CT:{
m_iNumCT++;
if(pPlayer->m_iMenu != Menu_ChooseAppearance){
m_iNumSpawnableCT++;
}if(pPlayer->pev->deadflag != DEAD_NO)
NumDeadCT++;
else
NumAliveCT++;
break;
}case TERRORIST:{
m_iNumTerrorist++;
if(pPlayer->m_iMenu != Menu_ChooseAppearance){
m_iNumSpawnableTerrorist++;
}if(pPlayer->pev->deadflag != DEAD_NO)
NumDeadTerrorist++;
else
NumAliveTerrorist++;
// Check to see if this guy escaped.if(pPlayer->m_bEscaped)
m_iHaveEscaped++;
break;
}default:break;
}}}