public async Task Test_Leaving_Three_Person_GroupAsync() { for (var i = 1; i < 3; i++) { _characters[i].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[i].CharacterId }; await _pJoinPacketHandler !.ExecuteAsync(pjoinPacket, _characters[0].Session).ConfigureAwait(false); } Assert.IsTrue(_characters[0].Group !.IsGroupFull && _characters[1].Group !.IsGroupFull && _characters[2].Group !.IsGroupFull && _characters[0].Group ! .IsGroupLeader(_characters[0].CharacterId)); await _pLeavePacketHandler !.ExecuteAsync(new PleavePacket(), _characters[1].Session).ConfigureAwait(false); Assert.IsTrue(_characters[0].Group ! .IsGroupLeader(_characters[0].CharacterId)); }
public async Task Test_Join_Full_GroupAsync() { PjoinPacket pjoinPacket; for (var i = 1; i < 3; i++) { _characters[i].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[i].CharacterId }; await _pJoinPacketHandler !.ExecuteAsync(pjoinPacket, _characters[0].Session).ConfigureAwait(false); } Assert.IsTrue(_characters[0].Group !.IsGroupFull && _characters[1].Group !.IsGroupFull && _characters[2].Group !.IsGroupFull); _characters[3].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[3].CharacterId }; await _pJoinPacketHandler !.ExecuteAsync(pjoinPacket, _characters[0].Session).ConfigureAwait(false); Assert.IsTrue(_characters[3].Group !.Count == 1); }
public void Test_Leaveing_Two_Person_Group() { for (var i = 1; i < 3; i++) { ServerManager.Instance.Sessions.Values.ElementAt(i).Character.GroupRequestCharacterIds .Add(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = ServerManager.Instance.Sessions.Values.ElementAt(i).Character.CharacterId }; _handlers.ElementAt(0).ManageGroup(pjoinPacket); } Assert.IsTrue(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.Group.IsGroupFull && ServerManager.Instance.Sessions.Values.ElementAt(1).Character.Group.IsGroupFull && ServerManager.Instance.Sessions.Values.ElementAt(2).Character.Group.IsGroupFull&& ServerManager .Instance.Sessions.Values.ElementAt(0).Character.Group .IsGroupLeader(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.CharacterId)); _handlers.ElementAt(1).LeaveGroup(new PleavePacket()); Assert.IsTrue(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.Group .IsGroupLeader(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.CharacterId)); }
public void Test_Join_Full_Group() { PjoinPacket pjoinPacket; for (var i = 1; i < 3; i++) { ServerManager.Instance.Sessions.Values.ElementAt(i).Character.GroupRequestCharacterIds .Add(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.CharacterId); pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = ServerManager.Instance.Sessions.Values.ElementAt(i).Character.CharacterId }; _handlers.ElementAt(0).ManageGroup(pjoinPacket); } Assert.IsTrue(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.Group.IsGroupFull && ServerManager.Instance.Sessions.Values.ElementAt(1).Character.Group.IsGroupFull && ServerManager.Instance.Sessions.Values.ElementAt(2).Character.Group.IsGroupFull); ServerManager.Instance.Sessions.Values.ElementAt(3).Character.GroupRequestCharacterIds .Add(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.CharacterId); pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = ServerManager.Instance.Sessions.Values.ElementAt(3).Character.CharacterId }; _handlers.ElementAt(0).ManageGroup(pjoinPacket); Assert.IsTrue(ServerManager.Instance.Sessions.Values.ElementAt(3).Character.Group.Count == 1); }
public void Test_Leaving_Three_Person_Group() { for (var i = 1; i < 3; i++) { _characters[i].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[i].CharacterId }; _pJoinPacketHandler.Execute(pjoinPacket, _characters[0].Session); } Assert.IsTrue(_characters[0].Group.IsGroupFull && _characters[1].Group.IsGroupFull && _characters[2].Group.IsGroupFull && _characters[0].Group .IsGroupLeader(_characters[0].CharacterId)); _pLeavePacketHandler.Execute(new PleavePacket(), _characters[1].Session); Assert.IsTrue(_characters[0].Group .IsGroupLeader(_characters[0].CharacterId)); }
public void Test_Join_Full_Group() { PjoinPacket pjoinPacket; for (var i = 1; i < 3; i++) { _characters[i].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[i].CharacterId }; _handlers.ElementAt(0).ManageGroup(pjoinPacket); } Assert.IsTrue(_characters[0].Group.IsGroupFull && _characters[1].Group.IsGroupFull && _characters[2].Group.IsGroupFull); _characters[3].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[3].CharacterId }; _handlers.ElementAt(0).ManageGroup(pjoinPacket); Assert.IsTrue(_characters[3].Group.Count == 1); }
public void Test_Join_Full_Group() { PjoinPacket pjoinPacket; for (var i = 1; i < 3; i++) { _characters[i].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[i].CharacterId }; _pJoinPacketHandler.Execute(pjoinPacket, _characters[0].Session); } Assert.IsTrue(_characters[0].Group.IsGroupFull && _characters[1].Group.IsGroupFull && _characters[2].Group.IsGroupFull); _characters[3].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[3].CharacterId }; _pJoinPacketHandler.Execute(pjoinPacket, _characters[0].Session); Assert.IsTrue(_characters[3].Group.Count == 1); }
public void Test_Leaving_Three_Person_Group() { for (var i = 1; i < 3; i++) { _characters[i].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[i].CharacterId }; _handlers.ElementAt(0).ManageGroup(pjoinPacket); } Assert.IsTrue(_characters[0].Group.IsGroupFull && _characters[1].Group.IsGroupFull && _characters[2].Group.IsGroupFull && _characters[0].Group .IsGroupLeader(_characters[0].CharacterId)); _handlers.ElementAt(1).LeaveGroup(new PleavePacket()); Assert.IsTrue(_characters[0].Group .IsGroupLeader(_characters[0].CharacterId)); }
public void Test_Decline_Not_Requested_Group() { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Declined, CharacterId = _characters[1].CharacterId }; _handlers.ElementAt(0).ManageGroup(pjoinPacket); Assert.IsTrue(_characters[0].Group.Count == 1 && _characters[1].Group.Count == 1); }
public void Test_Decline_Not_Requested_Group() { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Declined, CharacterId = _characters[1].CharacterId }; _pJoinPacketHandler.Execute(pjoinPacket, _characters[0].Session); Assert.IsTrue((_characters[0].Group.Count == 1) && (_characters[1].Group.Count == 1)); }
public async Task Test_Decline_Not_Requested_GroupAsync() { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Declined, CharacterId = _characters[1].CharacterId }; await _pJoinPacketHandler !.ExecuteAsync(pjoinPacket, _characters[0].Session).ConfigureAwait(false); Assert.IsTrue((_characters[0].Group !.Count == 1) && (_characters[1].Group !.Count == 1)); }
public void Test_Last_Request_Not_Null_After_One() { for (var i = 1; i < 3; i++) { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Invited, CharacterId = _characters[i].CharacterId }; _pJoinPacketHandler.Execute(pjoinPacket, _characters[0].Session); } Assert.IsNotNull(_characters[0].LastGroupRequest); }
public async Task Test_Last_Request_Not_Null_After_OneAsync() { for (var i = 1; i < 3; i++) { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Invited, CharacterId = _characters[i].CharacterId }; await _pJoinPacketHandler !.ExecuteAsync(pjoinPacket, _characters[0].Session).ConfigureAwait(false); } Assert.IsNotNull(_characters[0].LastGroupRequest); }
public void Test_Rejected_Group_Join() { ServerManager.Instance.Sessions.Values.ElementAt(1).Character.GroupRequestCharacterIds .Add(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Declined, CharacterId = ServerManager.Instance.Sessions.Values.ElementAt(1).Character.CharacterId }; _handlers.ElementAt(0).ManageGroup(pjoinPacket); Assert.IsTrue(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.Group.Count == 1 && ServerManager.Instance.Sessions.Values.ElementAt(1).Character.Group.Count == 1); }
public void Test_Decline_Group_Join_Requested() { _characters[1].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Declined, CharacterId = _characters[1].CharacterId }; _pJoinPacketHandler.Execute(pjoinPacket, _characters[0].Session); _pLeavePacketHandler.Execute(new PleavePacket(), _characters[0].Session); Assert.IsTrue((_characters[0].Group.Count == 1) && (_characters[1].Group.Count == 1)); }
public void Test_Accept_Group_Join_Requested() { _characters[1].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[1].CharacterId }; _handlers.ElementAt(0).ManageGroup(pjoinPacket); Assert.IsTrue(_characters[0].Group.Count > 1 && _characters[1].Group.Count > 1 && _characters[0].Group.GroupId == _characters[1].Group.GroupId); }
public void Test_Two_Request_Less_5_Sec_Delay() { SystemTime.Freeze(SystemTime.Now()); for (var i = 1; i < 3; i++) { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Invited, CharacterId = _characters[i].CharacterId }; SystemTime.Freeze(SystemTime.Now().AddSeconds(1)); _pJoinPacketHandler.Execute(pjoinPacket, _characters[0].Session); } Assert.IsTrue(_characters[0].GroupRequestCharacterIds.Count == 1); }
public void Test_Accept_Group_Join_Requested() { _characters[1].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[1].CharacterId }; _pJoinPacketHandler.Execute(pjoinPacket, _characters[0].Session); Assert.IsTrue((_characters[0].Group.Count > 1) && (_characters[1].Group.Count > 1) && (_characters[0].Group.GroupId == _characters[1].Group.GroupId)); }
public async Task Test_Decline_Group_Join_RequestedAsync() { _characters[1].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Declined, CharacterId = _characters[1].CharacterId }; await _pJoinPacketHandler !.ExecuteAsync(pjoinPacket, _characters[0].Session).ConfigureAwait(false); await _pLeavePacketHandler !.ExecuteAsync(new PleavePacket(), _characters[0].Session).ConfigureAwait(false); Assert.IsTrue((_characters[0].Group !.Count == 1) && (_characters[1].Group !.Count == 1)); }
public async Task Test_Two_Request_Less_5_Sec_DelayAsync() { SystemTime.Freeze(SystemTime.Now()); for (var i = 1; i < 3; i++) { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Invited, CharacterId = _characters[i].CharacterId }; SystemTime.Freeze(SystemTime.Now().AddSeconds(1)); await _pJoinPacketHandler !.ExecuteAsync(pjoinPacket, _characters[0].Session).ConfigureAwait(false); } Assert.IsTrue(_characters[0].GroupRequestCharacterIds.Count == 1); }
public async Task Test_Accept_Group_Join_RequestedAsync() { _characters[1].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[1].CharacterId }; await _pJoinPacketHandler !.ExecuteAsync(pjoinPacket, _characters[0].Session).ConfigureAwait(false); Assert.IsTrue((_characters[0].Group !.Count > 1) && (_characters[1].Group !.Count > 1) && (_characters[0].Group !.GroupId == _characters[1].Group !.GroupId)); }
public void Test_Leaving_Two_Person_Group() { _characters[1].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[1].CharacterId }; _handlers.ElementAt(0).ManageGroup(pjoinPacket); Assert.IsTrue(_characters[0].Group.Count > 1 && _characters[1].Group.Count > 1 && _characters[0].Group.GroupId == _characters[1].Group.GroupId); _handlers.ElementAt(0).LeaveGroup(new PleavePacket()); Assert.IsTrue(_characters[0].Group.Count == 1 && _characters[1].Group.Count == 1); }
public void Test_Leaving_Two_Person_Group() { ServerManager.Instance.Sessions.Values.ElementAt(1).Character.GroupRequestCharacterIds .Add(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = ServerManager.Instance.Sessions.Values.ElementAt(1).Character.CharacterId }; _handlers.ElementAt(0).ManageGroup(pjoinPacket); Assert.IsTrue(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.Group.Count > 1 && ServerManager.Instance.Sessions.Values.ElementAt(1).Character.Group.Count > 1 && ServerManager.Instance.Sessions.Values.ElementAt(0).Character.Group.GroupId == ServerManager.Instance.Sessions.Values.ElementAt(1).Character.Group.GroupId); _handlers.ElementAt(0).LeaveGroup(new PleavePacket()); Assert.IsTrue(ServerManager.Instance.Sessions.Values.ElementAt(0).Character.Group.Count == 1 && ServerManager.Instance.Sessions.Values.ElementAt(1).Character.Group.Count == 1); }
public void Test_Leaving_Two_Person_Group() { _characters[1].GroupRequestCharacterIds .TryAdd(_characters[0].CharacterId, _characters[0].CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _characters[1].CharacterId }; _pJoinPacketHandler.Execute(pjoinPacket, _characters[0].Session); Assert.IsTrue((_characters[0].Group.Count > 1) && (_characters[1].Group.Count > 1) && (_characters[0].Group.GroupId == _characters[1].Group.GroupId)); _pLeavePacketHandler.Execute(new PleavePacket(), _characters[0].Session); Assert.IsTrue((_characters[0].Group.Count == 1) && (_characters[1].Group.Count == 1)); }
/// <summary> /// pjoin packet /// </summary> /// <param name="pjoinPacket"></param> public void ManageGroup(PjoinPacket pjoinPacket) { var targetSession = ServerManager.Instance.Sessions.Values.FirstOrDefault(s => s.Character.CharacterId == pjoinPacket.CharacterId); if (targetSession == null && pjoinPacket.RequestType != GroupRequestType.Sharing) { Logger.Log.Error(Language.Instance.GetMessageFromKey(LanguageKey.UNABLE_TO_REQUEST_GROUP, Session.Account.Language)); return; } switch (pjoinPacket.RequestType) { case GroupRequestType.Requested: case GroupRequestType.Invited: if (pjoinPacket.CharacterId == Session.Character.CharacterId) { return; } if (targetSession.Character.Group.IsGroupFull) { Session.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.GROUP_FULL, Session.Account.Language) }); return; } if (targetSession.Character.Group.Count > 1 && Session.Character.Group.Count > 1) { Session.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.ALREADY_IN_GROUP, Session.Account.Language) }); return; } if (Session.Character.IsRelatedToCharacter(pjoinPacket.CharacterId, CharacterRelationType.Blocked)) { Session.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.BLACKLIST_BLOCKED, Session.Account.Language) }); return; } if (targetSession.Character.GroupRequestBlocked) { Session.SendPacket(new MsgPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.GROUP_BLOCKED, Session.Account.Language) }); return; } Session.Character.GroupRequestCharacterIds.Add(pjoinPacket.CharacterId); if (Session.Character.Group.Count == 1 || Session.Character.Group.Type == GroupType.Group) { if (targetSession.Character.Group.Count == 1 || targetSession.Character?.Group.Type == GroupType.Group) { Session.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.GROUP_INVITE, Session.Account.Language) }); targetSession.SendPacket(new DlgPacket { Question = Language.Instance.GetMessageFromKey(LanguageKey.INVITED_YOU_GROUP, targetSession.Account.Language), YesPacket = new PjoinPacket { CharacterId = Session.Character.CharacterId, RequestType = GroupRequestType.Accepted }, NoPacket = new PjoinPacket { CharacterId = Session.Character.CharacterId, RequestType = GroupRequestType.Declined } }); } } break; case GroupRequestType.Sharing: if (Session.Character.Group.Count == 1) { return; } Session.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.GROUP_SHARE_INFO, Session.Account.Language) }); Session.Character.Group.Values.Where(s => s.Item2.VisualId != Session.Character.CharacterId) .ToList().ForEach(s => { var session = ServerManager.Instance.Sessions.Values.FirstOrDefault(v => v.Character.CharacterId == s.Item2.VisualId); if (session == null) { return; } session.Character.GroupRequestCharacterIds.Add(s.Item2.VisualId); session.SendPacket(new DlgPacket { Question = Language.Instance.GetMessageFromKey(LanguageKey.INVITED_GROUP_SHARE, Session.Account.Language), YesPacket = new PjoinPacket { CharacterId = Session.Character.CharacterId, RequestType = GroupRequestType.AcceptedShare }, NoPacket = new PjoinPacket { CharacterId = Session.Character.CharacterId, RequestType = GroupRequestType.DeclinedShare } }); }); break; case GroupRequestType.Accepted: if (!targetSession.Character.GroupRequestCharacterIds.Contains(Session.Character.CharacterId)) { return; } targetSession.Character.GroupRequestCharacterIds.Remove(Session.Character.CharacterId); if (Session.Character.Group.Count > 1 && targetSession.Character.Group.Count > 1) { return; } if (Session.Character.Group.IsGroupFull || targetSession.Character.Group.IsGroupFull) { Session.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.GROUP_FULL, Session.Account.Language) }); targetSession.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.GROUP_FULL, targetSession.Account.Language) }); return; } if (Session.Character.Group.Count > 1) { targetSession.Character.JoinGroup(Session.Character.Group); targetSession.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.JOINED_GROUP, targetSession.Account.Language) }); } else if (targetSession.Character.Group.Count > 1) { if (targetSession.Character.Group.Type == GroupType.Group) { Session.Character.JoinGroup(targetSession.Character.Group); } } else { Session.Character.Group.GroupId = ServerManager.Instance.GetNextGroupId(); targetSession.Character.JoinGroup(Session.Character.Group); Session.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.JOINED_GROUP, Session.Account.Language) }); targetSession.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.GROUP_ADMIN, targetSession.Account.Language) }); targetSession.Character.Group = Session.Character.Group; Session.Character.GroupRequestCharacterIds.Clear(); targetSession.Character.GroupRequestCharacterIds.Clear(); } if (Session.Character.Group.Type != GroupType.Group) { return; } var currentGroup = Session.Character.Group; foreach (var member in currentGroup.Values.Where(s => s.Item2 is ICharacterEntity)) { var session = ServerManager.Instance.Sessions.Values.FirstOrDefault(s => s.Character.CharacterId == member.Item2.VisualId); session?.SendPacket(currentGroup.GeneratePinit()); session?.SendPackets(currentGroup.GeneratePst()); } ServerManager.Instance.Groups[currentGroup.GroupId] = currentGroup; Session.Character.MapInstance?.Broadcast(Session.Character.Group.GeneratePidx(Session.Character)); break; case GroupRequestType.Declined: if (!targetSession.Character.GroupRequestCharacterIds.Contains(Session.Character.CharacterId)) { return; } targetSession.Character.GroupRequestCharacterIds.Remove(Session.Character.CharacterId); targetSession.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.GROUP_REFUSED, targetSession.Account.Language) }); break; case GroupRequestType.AcceptedShare: if (!targetSession.Character.GroupRequestCharacterIds.Contains(Session.Character.CharacterId)) { return; } if (Session.Character.Group.Count == 1) { return; } targetSession.Character.GroupRequestCharacterIds.Remove(Session.Character.CharacterId); Session.SendPacket(new MsgPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.ACCEPTED_SHARE, Session.Account.Language), Type = MessageType.Whisper }); //TODO: add a way to change respawn points when system will be done break; case GroupRequestType.DeclinedShare: if (!targetSession.Character.GroupRequestCharacterIds.Contains(Session.Character.CharacterId)) { return; } targetSession.Character.GroupRequestCharacterIds.Remove(Session.Character.CharacterId); targetSession.SendPacket(new InfoPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.SHARED_REFUSED, targetSession.Account.Language) }); break; } }