public void PlayerBlock(MsgrClient client, Packet packet)
{
var characterName = packet.GetString();
var serverName = packet.GetString();
// Get user
var friend = MsgrServer.Instance.Database.GetFriendFromUser(characterName, serverName);
if (friend == null)
{
Send.FriendInviteR(client, FriendInviteResult.UserNotFound);
return;
}
// Check account
if (friend.AccountId == client.User.AccountId)
{
Send.FriendInviteR(client, FriendInviteResult.OwnAccount);
return;
}
// Check existing friends
if (client.User.Friends.Exists(a => a.Id == friend.Id))
{
Send.FriendInviteR(client, FriendInviteResult.AlreadyFriends);
return;
}
// Check max friends
var max = MsgrServer.Instance.Conf.Msgr.MaxFriends;
if (max != 0 && client.User.Friends.Count >= max)
{
Send.FriendInviteR(client, FriendInviteResult.MaxReached);
return;
}
friend.FriendshipStatus = FriendshipStatus.Blacklist;
// Add
client.User.Friends.Add(friend);
MsgrServer.Instance.Database.Blacklist(client.User.Id, friend.Id);
Send.FriendInviteR(client, FriendInviteResult.Success, friend);
}