Example #1
0
        /// <summary>Handles an incoming convert party to raid request</summary>
        /// <param name="client">the Session the incoming packet belongs to</param>
        /// <param name="packet">the full packet</param>
        public static void ConvertToRaidRequest(IRealmClient client, RealmPacketIn packet)
        {
            GroupMember groupMember = client.ActiveCharacter.GroupMember;

            if (groupMember == null)
            {
                return;
            }
            Group group1 = groupMember.Group;

            if (!(group1 is PartyGroup) || !group1.CheckPrivs(groupMember, GroupPrivs.Leader))
            {
                return;
            }
            Group group2 = (Group)((PartyGroup)group1).ConvertTo();

            GroupHandler.SendResult((IPacketReceiver)client, GroupResult.NoError);
            group2.SendUpdate();
        }
Example #2
0
        /// <summary>
        /// Handles an incoming request on moving Character from one subgroup to another
        /// </summary>
        /// <param name="client">the Session the incoming packet belongs to</param>
        /// <param name="packet">the full packet</param>
        public static void ChangeSubgroupRequest(IRealmClient client, RealmPacketIn packet)
        {
            GroupMember groupMember1 = client.ActiveCharacter.GroupMember;

            if (groupMember1 == null)
            {
                return;
            }
            RaidGroup group1 = groupMember1.Group as RaidGroup;

            if (group1 == null)
            {
                return;
            }
            string      targetName   = packet.ReadCString();
            byte        num          = packet.ReadByte();
            GroupMember groupMember2 = group1[targetName];

            if (group1.CheckAction(groupMember1, groupMember2, targetName, GroupPrivs.Assistant) != GroupResult.NoError)
            {
                return;
            }
            SubGroup group2 = group1.SubGroups.Get <SubGroup>((int)num);

            if (group2 == null)
            {
                return;
            }
            if (!group1.MoveMember(groupMember2, group2))
            {
                GroupHandler.SendResult((IPacketReceiver)client, GroupResult.GroupIsFull);
            }
            else
            {
                group1.SendUpdate();
            }
        }