public void GroupLeave(ClientSession session)
{
if (Groups != null)
{
Group grp = Instance.Groups.FirstOrDefault(s => s.IsMemberOfGroup(session.Character.CharacterId));
if (grp != null)
{
if (grp.CharacterCount == 3)
{
if (grp.Characters.ElementAt(0) == session)
{
Broadcast(session, session.Character.GenerateInfo(Language.Instance.GetMessageFromKey("NEW_LEADER")), ReceiverType.OnlySomeone, string.Empty, grp.Characters.ElementAt(1).Character.CharacterId);
}
grp.LeaveGroup(session);
foreach (ClientSession groupSession in grp.Characters)
{
ClientSession sess = GetSessionByCharacterId(groupSession.Character.CharacterId);
sess.SendPacket(sess.Character.GeneratePinit());
sess.SendPacket(sess.Character.GenerateMsg(string.Format(Language.Instance.GetMessageFromKey("LEAVE_GROUP"), session.Character.Name), 0));
}
session.SendPacket("pinit 0");
Broadcast(session.Character.GeneratePidx(true));
session.SendPacket(session.Character.GenerateMsg(Language.Instance.GetMessageFromKey("GROUP_LEFT"), 0));
}
else
{
foreach (ClientSession targetSession in grp.Characters)
{
targetSession.SendPacket("pinit 0");
targetSession.SendPacket(targetSession.Character.GenerateMsg(Language.Instance.GetMessageFromKey("GROUP_CLOSED"), 0));
Broadcast(targetSession.Character.GeneratePidx(true));
grp.LeaveGroup(targetSession);
}
RemoveGroup(grp);
}
session.Character.Group = null;
}
}
}