/// <summary> /// Handles a player disconnection. Cleans up the player from other players on the server /// as well as handles cleaning up the player from the system. /// </summary> public void Disconnect() { if (disconnected) { if (connections.Contains(this)) { connections.Remove(this); } return; } disconnected = true; pingTimer.Stop(); SendKick("Disconnected."); if (loggedIn) { GlobalDie(this, false); if (!hidden) { GlobalChat(this, "&c- " + color + name + "&e disconnected.", false); } IRCBot.Say(name + " left the game."); Logger.Log(name + " disconnected."); players.Remove(this); /*if (!Server.console && Server.win != null) * Server.win.UpdateClientList(players);*/ left.Add(this.name.ToLower(), this.ip); //Added by bman for lastseen command if (!lastSeen.ContainsKey(this.name.ToLower())) { lastSeen.Add(this.name.ToLower(), DateTime.Now); Server.SaveLastSeen(); } else { lastSeen[this.name.ToLower()] = DateTime.Now; Server.SaveLastSeen(); } } else { connections.Remove(this); Logger.Log(ip + " disconnected."); } if (Server.afkset.Contains(name)) { Server.afkset.Remove(name); } //Removes from afk list on disconnect }