diff options
Diffstat (limited to 'src/game/server')
| -rw-r--r-- | src/game/server/entities/character.cpp | 5 | ||||
| -rw-r--r-- | src/game/server/gamecontext.cpp | 1 | ||||
| -rw-r--r-- | src/game/server/gamecontroller.cpp | 2 | ||||
| -rw-r--r-- | src/game/server/gamemodes/tdm.cpp | 4 |
4 files changed, 8 insertions, 4 deletions
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 <engine/shared/config.h> + #include <game/server/entities/character.h> #include <game/server/player.h> #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; } |