about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/game/server/hooks.cpp2
-rw-r--r--src/game/server/player.cpp3
-rw-r--r--src/game/server/player.hpp1
3 files changed, 4 insertions, 2 deletions
diff --git a/src/game/server/hooks.cpp b/src/game/server/hooks.cpp
index d8e6c9bb..7fb79236 100644
--- a/src/game/server/hooks.cpp
+++ b/src/game/server/hooks.cpp
@@ -315,7 +315,7 @@ void mods_message(int msgtype, int client_id)
 			return;
 		
 		p->last_kill = time_get();
-		
+		p->respawn_tick = server_tick()+server_tickspeed()*3;
 		p->kill_character(); //(client_id, -1);
 	}
 }
diff --git a/src/game/server/player.cpp b/src/game/server/player.cpp
index 02e92c36..b31c4d2f 100644
--- a/src/game/server/player.cpp
+++ b/src/game/server/player.cpp
@@ -9,6 +9,7 @@ MACRO_ALLOC_POOL_ID_IMPL(PLAYER, MAX_CLIENTS)
 
 PLAYER::PLAYER(int client_id)
 {
+	respawn_tick = server_tick();
 	character = 0;
 	this->client_id = client_id;
 }
@@ -56,7 +57,7 @@ void PLAYER::tick()
 			character = 0;
 		}
 	}
-	else if(spawning)
+	else if(spawning && respawn_tick <= server_tick())
 		try_respawn();
 }
 
diff --git a/src/game/server/player.hpp b/src/game/server/player.hpp
index 24713c93..e88ce858 100644
--- a/src/game/server/player.hpp
+++ b/src/game/server/player.hpp
@@ -20,6 +20,7 @@ public:
 	int color_body;
 	int color_feet;
 	
+	int respawn_tick;
 	//
 	bool spawning;
 	int client_id;