public void RaidLeave(ClientSession session) { if (Raids != null) { Raid raid = Instance.Raids.FirstOrDefault(s => s.IsMemberOfRaid(session.Character.CharacterId)); if (raid != null) { if (raid.CharacterCount > 0) { if (raid.Leader == session) { raid.Leader = raid.Characters.ElementAt(0); raid.LeaveRaid(raid.Leader); raid.Leader.SendPacket($"say 1 {raid.Leader.Character.CharacterId} 10 {Language.Instance.GetMessageFromKey("RAID_NEW_LEADER")}"); raid.Leader.SendPacket(raid.Leader.Character.GenerateMsg(Language.Instance.GetMessageFromKey("RAID_NEW_LEADER"), 0)); } raid.LeaveRaid(session); foreach (ClientSession gs in raid.Characters) { gs.SendPacket(gs.Character.GeneratePinit()); gs.SendPacket(gs.Character.GenerateMsg(string.Format(Language.Instance.GetMessageFromKey("LEAVE_RAID"), session.Character.Name), 0)); } session.SendPacket("raid 1 0"); session.SendPacket("raid 2 - 1"); session.SendPacket(session.Character.GenerateMsg(Language.Instance.GetMessageFromKey("RAID_LEFT"), 0)); } else { RaidDisolve(session, raid); } raid.UpdateVisual(); } } }
public void RaidDisolve(ClientSession session, Raid raid = null) { if (raid == null) { raid = Instance.Raids.FirstOrDefault(s => s.IsMemberOfRaid(session.Character.CharacterId)); } if (raid != null) { raid.Leader.SendPacket("raid 1 0"); raid.Leader.SendPacket("raid 2 -1"); raid.Leader.SendPacket(raid.Leader.Character.GenerateMsg(Language.Instance.GetMessageFromKey("RAID_CLOSED"), 0)); raid.LeaveRaid(raid.Leader); foreach (ClientSession targetSession in raid.Characters) { targetSession.SendPacket("raid 1 0"); targetSession.SendPacket("raid 2 -1"); targetSession.SendPacket(targetSession.Character.GenerateMsg(Language.Instance.GetMessageFromKey("RAID_CLOSED"), 0)); raid.LeaveRaid(targetSession); } RemoveRaid(raid); } }