/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */ #include #include #include #include "tdm.h" CGameControllerTDM::CGameControllerTDM(class CGameContext *pGameServer) : IGameController(pGameServer) { m_pGameType = "TDM"; m_GameFlags = GAMEFLAG_TEAMS; } int CGameControllerTDM::OnCharacterDeath(class CCharacter *pVictim, class CPlayer *pKiller, int Weapon) { IGameController::OnCharacterDeath(pVictim, pKiller, Weapon); if(Weapon != WEAPON_GAME) { // do team scoring if(pKiller == pVictim->GetPlayer() || pKiller->GetTeam() == pVictim->GetPlayer()->GetTeam()) m_aTeamscore[pKiller->GetTeam()&1]--; // klant arschel else m_aTeamscore[pKiller->GetTeam()&1]++; // good shit } pVictim->GetPlayer()->m_RespawnTick = max(pVictim->GetPlayer()->m_RespawnTick, Server()->Tick()+Server()->TickSpeed()*g_Config.m_SvRespawnDelayTDM); return 0; } void CGameControllerTDM::Snap(int SnappingClient) { IGameController::Snap(SnappingClient); CNetObj_GameData *pGameDataObj = (CNetObj_GameData *)Server()->SnapNewItem(NETOBJTYPE_GAMEDATA, 0, sizeof(CNetObj_GameData)); if(!pGameDataObj) return; pGameDataObj->m_TeamscoreRed = m_aTeamscore[TEAM_RED]; pGameDataObj->m_TeamscoreBlue = m_aTeamscore[TEAM_BLUE]; pGameDataObj->m_FlagCarrierRed = 0; pGameDataObj->m_FlagCarrierBlue = 0; } void CGameControllerTDM::Tick() { IGameController::Tick(); }