about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlfred Eriksson <somerunce@gmail.com>2008-11-16 14:28:44 +0000
committerAlfred Eriksson <somerunce@gmail.com>2008-11-16 14:28:44 +0000
commitcd8c23ef1b733fb4088571a8bf7cd0d60c41a4ae (patch)
tree759f60cb88551a358553317e17541eed7e09cf30
parent42553448f7fb8d3d9aaa615facaf872b5d54e229 (diff)
downloadzcatch-cd8c23ef1b733fb4088571a8bf7cd0d60c41a4ae.tar.gz
zcatch-cd8c23ef1b733fb4088571a8bf7cd0d60c41a4ae.zip
fixed respawn times
-rw-r--r--src/game/server/entities/character.cpp8
-rw-r--r--src/game/server/player.cpp3
-rw-r--r--src/game/server/player.hpp1
3 files changed, 11 insertions, 1 deletions
diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp
index 3aeabd2d..c0bc3346 100644
--- a/src/game/server/entities/character.cpp
+++ b/src/game/server/entities/character.cpp
@@ -737,12 +737,18 @@ void CHARACTER::die(int killer, int weapon)
 	/*
 	die_pos = pos;
 	dead = true;
-	die_tick = server_tick();
 	*/
+	
+	// this is for auto respawn after 3 secs
+	player->die_tick = server_tick();
+	
 	alive = false;
 	game.world.remove_entity(this);
 	game.world.core.characters[player->client_id] = 0;
 	game.create_death(pos, player->client_id);
+	
+	// we got to wait 0.5 secs before respawning
+	player->respawn_tick = server_tick()+server_tickspeed()/2;
 }
 
 bool CHARACTER::take_damage(vec2 force, int dmg, int from, int weapon)
diff --git a/src/game/server/player.cpp b/src/game/server/player.cpp
index 322998a9..cf36823f 100644
--- a/src/game/server/player.cpp
+++ b/src/game/server/player.cpp
@@ -44,6 +44,9 @@ void PLAYER::tick()
 			latency.accum_max = 0;
 		}
 	}
+	
+	if(!character && die_tick+server_tickspeed()*3 <= server_tick())
+		spawning = true;
 
 	if(character)
 	{
diff --git a/src/game/server/player.hpp b/src/game/server/player.hpp
index a1aed594..f711317a 100644
--- a/src/game/server/player.hpp
+++ b/src/game/server/player.hpp
@@ -21,6 +21,7 @@ public:
 	int color_feet;
 	
 	int respawn_tick;
+	int die_tick;
 	//
 	bool spawning;
 	int client_id;