From 722644008f05dee4994c955b89be1d2342077d32 Mon Sep 17 00:00:00 2001 From: oy Date: Sat, 26 Mar 2011 22:38:05 +0100 Subject: added a respawn delay command for tdm --- src/game/server/entities/character.cpp | 5 ++--- src/game/server/gamecontext.cpp | 1 - src/game/server/gamecontroller.cpp | 2 ++ src/game/server/gamemodes/tdm.cpp | 4 ++++ 4 files changed, 8 insertions(+), 4 deletions(-) (limited to 'src/game/server') diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index 49bd4ee4..b40e768b 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -664,6 +664,8 @@ bool CCharacter::IncreaseArmor(int Amount) void CCharacter::Die(int Killer, int Weapon) { + // we got to wait 0.5 secs before respawning + m_pPlayer->m_RespawnTick = Server()->Tick()+Server()->TickSpeed()/2; int ModeSpecial = GameServer()->m_pController->OnCharacterDeath(this, GameServer()->m_apPlayers[Killer], Weapon); char aBuf[256]; @@ -690,9 +692,6 @@ 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()); - - // we got to wait 0.5 secs before respawning - m_pPlayer->m_RespawnTick = Server()->Tick()+Server()->TickSpeed()/2; } bool CCharacter::TakeDamage(vec2 Force, int Dmg, int From, int Weapon) diff --git a/src/game/server/gamecontext.cpp b/src/game/server/gamecontext.cpp index 907542f2..6a7cc1f9 100644 --- a/src/game/server/gamecontext.cpp +++ b/src/game/server/gamecontext.cpp @@ -948,7 +948,6 @@ void CGameContext::OnMessage(int MsgID, CUnpacker *pUnpacker, int ClientID) pPlayer->m_LastKill = Server()->Tick(); pPlayer->KillCharacter(WEAPON_SELF); - pPlayer->m_RespawnTick = Server()->Tick()+Server()->TickSpeed()*3; } } diff --git a/src/game/server/gamecontroller.cpp b/src/game/server/gamecontroller.cpp index e37bde65..c61168f9 100644 --- a/src/game/server/gamecontroller.cpp +++ b/src/game/server/gamecontroller.cpp @@ -391,6 +391,8 @@ int IGameController::OnCharacterDeath(class CCharacter *pVictim, class CPlayer * else pKiller->m_Score++; // normal kill } + if(Weapon == WEAPON_SELF) + pVictim->GetPlayer()->m_RespawnTick = Server()->Tick()+Server()->TickSpeed()*3.0f; return 0; } diff --git a/src/game/server/gamemodes/tdm.cpp b/src/game/server/gamemodes/tdm.cpp index ef5302c6..fb0ff783 100644 --- a/src/game/server/gamemodes/tdm.cpp +++ b/src/game/server/gamemodes/tdm.cpp @@ -1,5 +1,7 @@ /* (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" @@ -23,6 +25,8 @@ int CGameControllerTDM::OnCharacterDeath(class CCharacter *pVictim, class CPlaye 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; } -- cgit 1.4.1