diff options
| -rw-r--r-- | src/game/server/entities/character.cpp | 8 | ||||
| -rw-r--r-- | src/game/server/player.cpp | 3 | ||||
| -rw-r--r-- | src/game/server/player.hpp | 1 |
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; |