Esempio n. 1
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))
            {
                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));
                }
            }
        }