Exemplo n.º 1
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(num);

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