/// <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
}