Fixed team blocking by disconnect (Closes #206)

This commit is contained in:
Shereef Marzouk 2013-02-01 13:08:23 +02:00
parent 6295b33965
commit b000c9e4e1
3 changed files with 17 additions and 2 deletions

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);