static bool PlayerIsInactive([NotNull] IDictionary <IPAddress, List <PlayerInfo> > playersByIP, [NotNull] PlayerInfo player, bool checkIP)
{
if (playersByIP == null)
{
throw new ArgumentNullException("playersByIP");
}
if (player == null)
{
throw new ArgumentNullException("player");
}
if (player.BanStatus != BanStatus.NotBanned || player.UnbanDate != DateTime.MinValue ||
player.IsFrozen || player.IsMuted || player.TimesKicked != 0 ||
player.Rank != RankManager.DefaultRank || player.PreviousRank != null)
{
return(false);
}
if (player.TotalTime.TotalMinutes > 30 || player.TimeSinceLastSeen.TotalDays < 30)
{
return(false);
}
if (IPBanList.Get(player.LastIP) != null)
{
return(false);
}
if (checkIP)
{
return(playersByIP[player.LastIP].All(other => (other == player) || PlayerIsInactive(playersByIP, other, false)));
}
return(true);
}