diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index 03c4a5a76..eae0c28cb 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -84,6 +84,8 @@ bool CCharacter::Spawn(CPlayer *pPlayer, vec2 Pos) GameServer()->m_pController->OnCharacterSpawn(this); + Teams()->OnCharacterSpawn(GetPlayer()->GetCID()); + DDRaceInit(); return true; @@ -790,6 +792,7 @@ void CCharacter::Die(int Killer, int Weapon) GameServer()->m_World.RemoveEntity(this); GameServer()->m_World.m_Core.m_apCharacters[m_pPlayer->GetCID()] = 0; GameServer()->CreateDeath(m_Pos, m_pPlayer->GetCID(), Teams()->TeamMask(Team(), -1, m_pPlayer->GetCID())); + Teams()->OnCharacterDeath(GetPlayer()->GetCID()); } bool CCharacter::TakeDamage(vec2 Force, int Dmg, int From, int Weapon) @@ -1624,6 +1627,4 @@ void CCharacter::DDRaceInit() m_TeleCheckpoint = 0; m_EndlessHook = g_Config.m_SvEndlessDrag; m_Hit = g_Config.m_SvHit ? HIT_ALL : DISABLE_HIT_GRENADE|DISABLE_HIT_HAMMER|DISABLE_HIT_RIFLE|DISABLE_HIT_SHOTGUN; - Teams()->m_Core.SetSolo(m_pPlayer->GetCID(), false); - Teams()->SetForceCharacterTeam(m_pPlayer->GetCID(), 0); } diff --git a/src/game/server/teams.cpp b/src/game/server/teams.cpp index dbd29cc08..5666b0cbd 100644 --- a/src/game/server/teams.cpp +++ b/src/game/server/teams.cpp @@ -477,3 +477,15 @@ void CGameTeams::OnFinish(CPlayer* Player) Player->m_Score = TTime; } + +void CGameTeams::OnCharacterSpawn(int ClientID) +{ + m_Core.SetSolo(ClientID, false); + SetForceCharacterTeam(ClientID, 0); +} + +void CGameTeams::OnCharacterDeath(int ClientID) +{ + m_Core.SetSolo(ClientID, false); + SetForceCharacterTeam(ClientID, 0); +} diff --git a/src/game/server/teams.h b/src/game/server/teams.h index 4a497dbf4..8146fcfe4 100644 --- a/src/game/server/teams.h +++ b/src/game/server/teams.h @@ -44,6 +44,8 @@ public: void OnCharacterStart(int ClientID); void OnCharacterFinish(int ClientID); + void OnCharacterSpawn(int ClientID); + void OnCharacterDeath(int ClientID); bool SetCharacterTeam(int ClientID, int Team);