/// <summary> /// mkraid packet /// </summary> /// <param name="packet"></param> public void GenerateRaid(MkraidPacket packet) { if (Session.Character.Group?.Raid == null || !Session.Character.Group.IsLeader(Session)) { return; } if (Session.Character.MapId != Session.Character.Group?.Raid.MapId) { Session.SendPacket(UserInterfaceHelper.Instance.GenerateMsg("WRONG_PORTAL", 0)); return; } if (Session.Character.Group.CharacterCount > 4 || Session.Character.Authority >= AuthorityType.GameMaster) { if (Session.Character.Group.Raid.FirstMap == null) { Session.Character.Group.Raid.LoadScript(MapInstanceType.RaidInstance); } if (Session.Character.Group.Raid.FirstMap == null) { return; } Session.Character.Group.Raid.FirstMap.InstanceBag.Lock = true; if (ServerManager.Instance.GroupList.Any(s => s.GroupId == Session.Character.Group.GroupId)) { ServerManager.Instance.GroupList.Remove(Session.Character.Group); } Session.Character.Group.Characters.Where(s => s.CurrentMapInstance.MapInstanceId != Session.CurrentMapInstance.MapInstanceId).ToList().ForEach(session => { Session.Character.Group.LeaveGroup(session); session.SendPacket(session.Character.GenerateRaid(1, true)); session.SendPacket(session.Character.GenerateRaid(2, true)); }); Session.Character.Group.Raid.FirstMap.InstanceBag.Lives = (short)Session.Character.Group.CharacterCount; Session.Character.Group.Characters.ToList().ForEach(session => { ServerManager.Instance.ChangeMapInstance(session.Character.CharacterId, session.Character.Group.Raid.FirstMap.MapInstanceId, session.Character.Group.Raid.StartX, session.Character.Group.Raid.StartY); session.SendPacket("raidbf 0 0 25"); session.SendPacket(session.Character.Group.GeneraterRaidmbf(session.CurrentMapInstance)); session.SendPacket(session.Character.GenerateRaid(5, false)); session.SendPacket(session.Character.GenerateRaid(4, false)); session.SendPacket(session.Character.GenerateRaid(3, false)); }); } else { Session.SendPacket(UserInterfaceHelper.Instance.GenerateMsg("RAID_TEAM_NOT_READY", 0)); } }
/// <summary> /// mkraid packet /// </summary> /// <param name="packet"></param> public void GenerateRaid(MkraidPacket packet) { if (Session.Character.Group?.Raid != null && Session.Character.Group.IsLeader(Session)) { if (Session.Character.Group.CharacterCount > 4) { if (Session.Character.Group.Raid.FirstMap == null) { Session.Character.Group.Raid.LoadScript(MapInstanceType.RaidInstance); } if (Session.Character.Group.Raid.FirstMap == null) { return; } Session.Character.Group.Raid.FirstMap.InstanceBag.Lock = true; Session.Character.Group.Characters.Where(s => s.CurrentMapInstance != Session.CurrentMapInstance).ToList().ForEach( session => { Session.Character.Group.LeaveGroup(session); session.SendPacket(session.Character.GenerateRaid(1, true)); session.SendPacket(session.Character.GenerateRaid(2, true)); }); Session.Character.Group.Raid.FirstMap.InstanceBag.Lives = (short)Session.Character.Group.CharacterCount; Session.Character.Group.Characters.ForEach( session => { ServerManager.Instance.ChangeMapInstance(session.Character.CharacterId, session.Character.Group.Raid.FirstMap.MapInstanceId, session.Character.Group.Raid.StartX, session.Character.Group.Raid.StartY); session.SendPacket("raidbf 0 0 25"); session.SendPacket(session.Character.Group.GeneraterRaidmbf()); session.SendPacket(session.Character.GenerateRaid(5, false)); session.SendPacket(session.Character.GenerateRaid(4, false)); session.SendPacket(session.Character.GenerateRaid(3, false)); }); } else { Session.SendPacket(UserInterfaceHelper.Instance.GenerateMsg("RAID_TEAM_NOT_READY", 0)); } } }