about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/engine/server/server.c8
-rw-r--r--src/game/server/game_server.cpp1
2 files changed, 8 insertions, 1 deletions
diff --git a/src/engine/server/server.c b/src/engine/server/server.c
index ef4c9b04..319ac363 100644
--- a/src/engine/server/server.c
+++ b/src/engine/server/server.c
@@ -388,7 +388,13 @@ static int new_client_callback(int cid, void *user)
 
 static int del_client_callback(int cid, void *user)
 {
-	mods_client_drop(cid);
+	/* notify the mod about the drop */
+	if(clients[cid].state == SRVCLIENT_STATE_READY ||
+		clients[cid].state == SRVCLIENT_STATE_INGAME)
+	{
+		mods_client_drop(cid);
+	}
+
 	clients[cid].state = SRVCLIENT_STATE_EMPTY;
 	clients[cid].name[0] = 0;
 	clients[cid].clan[0] = 0;
diff --git a/src/game/server/game_server.cpp b/src/game/server/game_server.cpp
index aaabdbc3..2d3d02b0 100644
--- a/src/game/server/game_server.cpp
+++ b/src/game/server/game_server.cpp
@@ -1601,6 +1601,7 @@ void mods_client_drop(int client_id)
 
 	gameobj->on_player_death(&players[client_id], 0, -1);
 	world->remove_entity(&players[client_id]);
+	world->core.players[client_id] = 0x0;
 	players[client_id].client_id = -1;
 }