public static void HandleCalendarEventInviteAlert(Packet packet)
        {
            // TODO: find unks

            packet.ReadUInt64("EventID");
            packet.ReadPackedTime("Date");
            packet.ReadInt32E<CalendarFlag>("Flags");

            packet.ReadByteE<CalendarEventType>("EventType");

            packet.ReadInt32("TextureID");

            packet.ReadPackedGuid128("EventGuildID");

            packet.ReadUInt64("InviteID");

            packet.ReadByteE<CalendarEventStatus>("Status");
            packet.ReadByteE<CalendarModerationRank>("ModeratorStatus");

            packet.ReadPackedGuid128("OwnerGUID | InvitedByGUID");
            packet.ReadPackedGuid128("OwnerGUID | InvitedByGUID");

            var eventNameLength = packet.ReadBits("EventNameLength", 8);
            packet.ResetBitReader();

            packet.ReadWoWString("EventName", eventNameLength);
        }
        public static void HandleLootResponse(Packet packet)
        {
            packet.ReadPackedGuid128("Owner");
            packet.ReadPackedGuid128("LootObj");
            packet.ReadByteE<LootError>("FailureReason");
            packet.ReadByteE<LootType>("AcquireReason");
            packet.ReadByteE<LootMethod>("LootMethod");
            packet.ReadByteE<ItemQuality>("Threshold");

            packet.ReadUInt32("Coins");

            var itemCount = packet.ReadUInt32("ItemCount");
            var currencyCount = packet.ReadUInt32("CurrencyCount");

            packet.ResetBitReader();

            packet.ReadBit("Acquired");
            packet.ReadBit("AELooting");
            packet.ReadBit("PersonalLooting");

            for (var i = 0; i < itemCount; ++i)
                ReadLootItem(packet, i, "LootItem");

            for (var i = 0; i < currencyCount; ++i)
                V6_0_2_19033.Parsers.LootHandler.ReadCurrenciesData(packet, i, "Currencies");
        }
        public static void HandleAddCalendarEvent(Packet packet)
        {
            packet.ReadCString("Title");
            packet.ReadCString("Description");
            packet.ReadByteE<CalendarEventType>("Event Type");
            packet.ReadByteE<CalendarRepeatType>("Repeat Type");
            packet.ReadInt32("Max Invites");
            packet.ReadInt32<LFGDungeonId>("Dungeon ID");
            packet.ReadPackedTime("Event Time");
            packet.ReadPackedTime("Unk PackedTime");

            var flags = packet.ReadInt32E<CalendarFlag>("Event Flags");

            if ((flags & CalendarFlag.GuildAnnouncement) != 0)
                return;

            var count = packet.ReadInt32("Invite Count");

            for (var i = 0; i < count; i++)
            {
                packet.ReadPackedGuid("Creator GUID");
                packet.ReadByteE<CalendarEventStatus>("Status");
                packet.ReadByteE<CalendarModerationRank>("Moderation Rank");
            }
        }
 public static void HandleAddCalendarEventInvite(Packet packet)
 {
     packet.ReadInt64("Event ID");
     packet.ReadInt64("Invite ID");
     packet.ReadCString("Name");
     packet.ReadByteE<CalendarEventStatus>("Status");
     packet.ReadByteE<CalendarModerationRank>("Moderation Rank");
 }
 public static void HandleCalendarEventInvite(Packet packet)
 {
     packet.ReadPackedGuid128("InviteGUID");
     packet.ReadUInt64("EventID");
     packet.ReadUInt64("InviteID");
     packet.ReadByte("Level");
     packet.ReadByteE<CalendarEventStatus>("Status");
     packet.ReadByteE<CalendarEventType>("Type");
     packet.ReadPackedTime("ResponseTime");
     packet.ReadBit("ClearPending");
 }
        public static void HandleGuildRoster(Packet packet)
        {
            packet.ReadUInt32("NumAccounts");
            packet.ReadPackedTime("CreateDate");
            packet.ReadUInt32("GuildFlags");
            var int20 = packet.ReadUInt32("MemberDataCount");

            packet.ResetBitReader();
            var bits2037 = packet.ReadBits(10);
            var bits9 = packet.ReadBits(11);

            for (var i = 0; i < int20; ++i)
            {
                packet.ReadPackedGuid128("Guid", i);

                packet.ReadUInt32("RankID", i);
                packet.ReadUInt32<AreaId>("AreaID", i);
                packet.ReadUInt32("PersonalAchievementPoints", i);
                packet.ReadUInt32("GuildReputation", i);

                packet.ReadSingle("LastSave", i);

                for (var j = 0; j < 2; ++j)
                {
                    packet.ReadUInt32("DbID", i, j);
                    packet.ReadUInt32("Rank", i, j);
                    packet.ReadUInt32("Step", i, j);
                }

                packet.ReadUInt32("VirtualRealmAddress", i);

                packet.ReadByteE<GuildMemberFlag>("Status", i);
                packet.ReadByte("Level", i);
                packet.ReadByteE<Class>("ClassID", i);
                packet.ReadByteE<Gender>("Gender", i);

                packet.ResetBitReader();

                var bits36 = packet.ReadBits(6);
                var bits92 = packet.ReadBits(8);
                var bits221 = packet.ReadBits(8);

                packet.ReadBit("Authenticated", i);
                packet.ReadBit("SorEligible", i);

                packet.ReadWoWString("Name", bits36, i);
                packet.ReadWoWString("Note", bits92, i);
                packet.ReadWoWString("OfficerNote", bits221, i);
            }

            packet.ReadWoWString("WelcomeText", bits2037);
            packet.ReadWoWString("InfoText", bits9);
        }
 public static void HandleChannelSendList(Packet packet)
 {
     packet.ReadByte("Type");
     packet.ReadCString("Channel Name");
     packet.ReadByteE<ChannelFlag>("Flags");
     var count = packet.ReadInt32("Counter");
     for (var i = 0; i < count; i++)
     {
         packet.ReadGuid("Player GUID " + i);
         packet.ReadUInt32("Realm ID");
         packet.ReadByteE<ChannelMemberFlag>("Player Flags " + i);
     }
 }
        public static void HandleFriendStatus(Packet packet)
        {
            var result = packet.ReadByteE<ContactResult>("Result");

            packet.ReadGuid("GUID");

            switch (result)
            {
                case ContactResult.FriendAddedOffline:
                    packet.ReadCString("Note");
                    break;
                case ContactResult.FriendAddedOnline:
                {
                    packet.ReadCString("Note");
                    ReadSingleContactBlock(packet, false);
                    break;
                }
                case ContactResult.Online:
                    ReadSingleContactBlock(packet, false);
                    break;
                case ContactResult.Unknown2:
                    packet.ReadByte("Unk byte 1");
                    break;
                case ContactResult.Unknown3:
                    packet.ReadInt32("Unk int");
                    break;
            }
        }
        public static void HandleAuthResponse(Packet packet)
        {
            var code = packet.ReadByteE<ResponseCode>("Auth Code");

            switch (code)
            {
                case ResponseCode.AUTH_OK:
                {
                    ReadAuthResponseInfo(packet);
                    break;
                }
                case ResponseCode.AUTH_WAIT_QUEUE:
                {
                    if (packet.Length <= 6)
                    {
                        ReadQueuePositionInfo(packet);
                        break;
                    }

                    ReadAuthResponseInfo(packet);
                    ReadQueuePositionInfo(packet);
                    break;
                }
            }
        }
        public static void HandleAttackerStateUpdate(Packet packet)
        {
            var hitInfo = packet.ReadInt32E<SpellHitInfo>("HitInfo");
            packet.ReadPackedGuid("AttackerGUID");
            packet.ReadPackedGuid("TargetGUID");
            packet.ReadInt32("Damage");

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V3_0_3_9183))
                packet.ReadInt32("OverDamage");

            var subDmgCount = packet.ReadByte();
            for (var i = 0; i < subDmgCount; ++i)
            {
                packet.ReadInt32("SchoolMask", i);
                packet.ReadSingle("Float Damage", i);
                packet.ReadInt32("Int Damage", i);

                if (ClientVersion.RemovedInVersion(ClientVersionBuild.V3_0_3_9183) ||
                    hitInfo.HasAnyFlag(SpellHitInfo.HITINFO_PARTIAL_ABSORB | SpellHitInfo.HITINFO_FULL_ABSORB))
                    packet.ReadInt32("Damage Absorbed", i);

                if (ClientVersion.RemovedInVersion(ClientVersionBuild.V3_0_3_9183) ||
                    hitInfo.HasAnyFlag(SpellHitInfo.HITINFO_PARTIAL_RESIST | SpellHitInfo.HITINFO_FULL_RESIST))
                    packet.ReadInt32("Damage Resisted", i);
            }

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V3_0_3_9183))
                packet.ReadByteE<VictimStates>("VictimState");
            else
                packet.ReadInt32E<VictimStates>("VictimState");

            packet.ReadInt32("Unk Attacker State 0");

            packet.ReadInt32<SpellId>("Melee Spell ID ");

            if (ClientVersion.RemovedInVersion(ClientVersionBuild.V3_0_3_9183) ||
                hitInfo.HasAnyFlag(SpellHitInfo.HITINFO_BLOCK))
                packet.ReadInt32("Block Amount");

            if (hitInfo.HasAnyFlag(SpellHitInfo.HITINFO_RAGE_GAIN))
                packet.ReadInt32("Rage Gained");

            if (hitInfo.HasAnyFlag(SpellHitInfo.HITINFO_UNK0))
            {
                packet.ReadInt32("Unk Attacker State 3 1");
                packet.ReadSingle("Unk Attacker State 3 2");
                packet.ReadSingle("Unk Attacker State 3 3");
                packet.ReadSingle("Unk Attacker State 3 4");
                packet.ReadSingle("Unk Attacker State 3 5");
                packet.ReadSingle("Unk Attacker State 3 6");
                packet.ReadSingle("Unk Attacker State 3 7");
                packet.ReadSingle("Unk Attacker State 3 8");
                packet.ReadSingle("Unk Attacker State 3 9");
                packet.ReadSingle("Unk Attacker State 3 10");
                packet.ReadSingle("Unk Attacker State 3 11");
                packet.ReadInt32("Unk Attacker State 3 12");
                packet.ReadInt32("Unk Attacker State 3 13");
                packet.ReadInt32("Unk Attacker State 3 14");
            }
        }
 public static void HandleCalendarEventInviteModeratorStatus(Packet packet)
 {
     packet.ReadPackedGuid128("InviteGUID");
     packet.ReadUInt64("EventID");
     packet.ReadByteE<CalendarModerationRank>("Status"); // enum NC
     packet.ReadBit("ClearPending");
 }
Example #12
0
 public static void HandlePetActionFeedback(Packet packet)
 {
     var hasData = !packet.ReadBit("!hasData"); // 16
     var state = packet.ReadByteE<PetFeedback>("Pet state"); // 20
     if (hasData)
         packet.ReadInt32<SpellId>("Spell ID"); // 16
 }
Example #13
0
        public static void HandleContactList(Packet packet)
        {
            packet.ReadInt32E<ContactListFlag>("List Flags");
            var count = packet.ReadInt32("Count");

            for (var i = 0; i < count; i++)
            {
                packet.ReadGuid("GUID");
                packet.ReadInt32("Realm Id");
                packet.ReadInt32("Realm Id");
                var flag = packet.ReadInt32E<ContactEntryFlag>("Flags");
                packet.ReadCString("Note");

                if (!flag.HasAnyFlag(ContactEntryFlag.Friend))
                    continue;

                var status = packet.ReadByteE<ContactStatus>("Status");
                if (status == 0) // required any flag
                    continue;

                packet.ReadInt32<AreaId>("Area");
                packet.ReadInt32("Level");
                packet.ReadInt32E<Class>("Class");
            }

            // still needed?
            if (packet.CanRead())
                CoreParsers.WardenHandler.ReadCheatCheckDecryptionBlock(packet);
        }
Example #14
0
        public static void HandleContactList(Packet packet)
        {
            packet.ReadInt32E<ContactListFlag>("List Flags");
            var count = packet.ReadInt32("Count");

            for (var i = 0; i < count; i++)
            {
                packet.ReadGuid("GUID");
                packet.ReadInt32("Realm Id");
                packet.ReadInt32("Realm Id");
                var flag = packet.ReadInt32E<ContactEntryFlag>("Flags");
                packet.ReadCString("Note");

                if (!flag.HasAnyFlag(ContactEntryFlag.Friend))
                    continue;

                var status = packet.ReadByteE<ContactStatus>("Status");
                if (status == 0) // required any flag
                    continue;

                packet.ReadInt32<AreaId>("Area");
                packet.ReadInt32("Level");
                packet.ReadInt32E<Class>("Class");
            }
        }
 public static void HandleLootMethod(Packet packet)
 {
     packet.ReadByte("PartyIndex");
     packet.ReadByteE<LootMethod>("Method");
     packet.ReadPackedGuid128("Master");
     packet.ReadInt32E<ItemQuality>("Threshold");
 }
Example #16
0
        public static void HandleAuthResponse505(Packet packet)
        {
            var hasAccountData = packet.ReadBit("Has Account Data");
            var count = 0u;
            var count1 = 0u;

            if (hasAccountData)
            {
                packet.ReadBit("Unk 2");
                count = packet.ReadBits("Class Activation Count", 25);
                packet.ReadBits("Unk", 22);
                count1 = packet.ReadBits("Race Activation Count", 25);
            }

            var isQueued = packet.ReadBit("Is In Queue");
            if (isQueued)
            {
                packet.ReadBit("Unk 3");
                packet.ReadUInt32("Queue Position");
            }

            if (hasAccountData)
            {
                packet.ReadByte("Unk 5");
                packet.ReadByteE<ClientType>("Player Expansion");

                for (var i = 0; i < count; ++i)
                {
                    packet.ReadByteE<Class>("Class", i);
                    packet.ReadByteE<ClientType>("Class Expansion", i);
                }

                packet.ReadUInt32("Unk 8");
                packet.ReadUInt32("Unk 9");
                packet.ReadUInt32("Unk 10");

                for (var i = 0; i < count1; ++i)
                {
                    packet.ReadByteE<Race>("Race", i);
                    packet.ReadByteE<ClientType>("Race Expansion", i);
                }

                packet.ReadByteE<ClientType>("Account Expansion");
            }

            packet.ReadByteE<ResponseCode>("Auth Code");
        }
 public static void HandleBuyFailed(Packet packet)
 {
     packet.ReadGuid("Vendor GUID");
     packet.ReadUInt32<ItemId>("Entry");
     if (ClientVersion.RemovedInVersion(ClientVersionBuild.V4_2_2_14545))
         packet.ReadInt32("Param");
     packet.ReadByteE<BuyResult>("Result");
 }
Example #18
0
        public static void HandleNpcGossip(Packet packet)
        {
            GossipMenu gossip = new GossipMenu();

            WowGuid guid = packet.ReadGuid("GUID");

            gossip.ObjectType = guid.GetObjectType();
            gossip.ObjectEntry = guid.GetEntry();

            uint menuId = packet.ReadUInt32("Menu Id");
            gossip.Entry = menuId;

            if (ClientVersion.AddedInVersion(ClientType.MistsOfPandaria))
                packet.ReadUInt32("Friendship Faction");

            gossip.TextID = packet.ReadUInt32("Text Id");

            uint count = packet.ReadUInt32("Amount of Options");

            for (int i = 0; i < count; i++)
            {
                GossipMenuOption gossipOption = new GossipMenuOption
                {
                    MenuID = menuId,
                    ID = packet.ReadUInt32("Index", i),
                    OptionIcon = packet.ReadByteE<GossipOptionIcon>("Icon", i),
                    BoxCoded = packet.ReadBool("Box", i),
                    BoxMoney = packet.ReadUInt32("Required money", i),
                    OptionText = packet.ReadCString("Text", i),
                    BoxText = packet.ReadCString("Box Text", i)
                };

                Storage.GossipMenuOptions.Add(gossipOption, packet.TimeSpan);
            }

            uint questgossips = packet.ReadUInt32("Amount of Quest gossips");
            for (int i = 0; i < questgossips; i++)
            {
                packet.ReadUInt32<QuestId>("Quest ID", i);

                packet.ReadUInt32("Icon", i);
                packet.ReadInt32("Level", i);
                packet.ReadUInt32E<QuestFlags>("Flags", i);
                if (ClientVersion.AddedInVersion(ClientVersionBuild.V5_1_0_16309))
                    packet.ReadUInt32E<QuestFlags2>("Flags 2", i);

                packet.ReadBool("Change Icon", i);
                packet.ReadCString("Title", i);
            }

            if (guid.GetObjectType() == ObjectType.Unit)
                if (Storage.Objects.ContainsKey(guid))
                    ((Unit)Storage.Objects[guid].Item1).GossipId = menuId;

            Storage.Gossips.Add(gossip, packet.TimeSpan);

            packet.AddSniffData(StoreNameType.Gossip, (int)menuId, guid.GetEntry().ToString(CultureInfo.InvariantCulture));
        }
Example #19
0
        public static void HandleServerWardenData(Packet packet)
        {
            var opcode = packet.ReadByteE<WardenServerOpcode>("Warden Server Opcode");

            packet.SetPosition(0);

            switch (opcode)
            {
                case WardenServerOpcode.ModuleInfo:
                {
                    packet.ReadByte();
                    packet.ReadBytes("Module MD5", 16);
                    packet.ReadBytes("Module RC4", 16);
                    packet.ReadUInt32("Module Length");
                    break;
                }
                case WardenServerOpcode.ModuleChunk:
                {
                    packet.ReadByte();

                    var length = packet.ReadUInt16("Chunk Length");
                    packet.ReadBytes("Module Chunk", length);
                    break;
                }
                case WardenServerOpcode.CheatChecks:
                {
                    packet.ReadByte();

                    byte length;
                    while ((length = packet.ReadByte()) != 0)
                    {
                        packet.ReadBytes("String", length);
                    }

                    // var rest = (int)(packet.GetLength() - packet.GetPosition());
                    break;
                }
                case WardenServerOpcode.Data:
                {
                    while (packet.CanRead())
                    {
                        packet.ReadByte();

                        var length = packet.ReadUInt16("Data Length");
                        packet.ReadInt32("Data Checksum");
                        packet.ReadBytes("Data", length);
                    }
                    break;
                }
                case WardenServerOpcode.Seed:
                {
                    packet.ReadByte();
                    packet.ReadBytes("Seed", 16);
                    break;
                }
            }
        }
 public static void HandleInitializeFactions(Packet packet)
 {
     var count = packet.ReadInt32("Count");
     for (var i = 0; i < count; i++)
     {
         packet.ReadByteE<FactionFlag>("Faction Flags", i);
         packet.ReadUInt32E<ReputationRank>("Faction Standing", i);
     }
 }
        public static void HandleArenaTeamEvent(Packet packet)
        {
            packet.ReadByteE<ArenaEvent>("Event");
            var count = packet.ReadByte("Count");
            for (var i = 0; i < count; ++i)
                packet.ReadCString("Param", i);

            if (packet.CanRead())
                packet.ReadGuid("GUID");
        }
Example #22
0
 public static void HandlePetAction(Packet packet)
 {
     packet.ReadGuid("GUID");
     var action = (uint)packet.ReadUInt16() + (packet.ReadByte() << 16);
     packet.AddValue("Action", action);
     packet.ReadByteE<ActionButtonType>("Type");
     packet.ReadGuid("GUID");
     if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_0_6_13596))
         packet.ReadVector3("Position");
 }
        public static void HandleInitializeFactions(Packet packet)
        {
            for (var i = 0; i < 0x100; i++)
            {
                packet.ReadByteE<FactionFlag>("FactionFlags", i);
                packet.ReadUInt32E<ReputationRank>("FactionStandings", i);
            }

            for (var i = 0; i < 0x100; i++)
                packet.ReadBit("FactionHasBonus", i);
        }
Example #24
0
 public static void HandleGMTicketGetTicket(Packet packet)
 {
     var hasData = packet.ReadBit("HasData");
     if (hasData)
     {
         var len1 = packet.ReadBits(11); // len6
         var len2 = packet.ReadBits(10); // len2042
         packet.ReadInt32("Ticket ID"); // 5
         packet.ReadByteE<GMTicketEscalationStatus>("Escalation Status"); // 2040
         packet.ReadByteE<GMTicketOpenedByGMStatus>("Opened"); // 2041
         packet.ReadByte("unk2025"); // 2025
         packet.ReadInt32("MapID"); // 509
         packet.ReadWoWString("Ticket", len1); // 6
         packet.ReadInt32("unk767"); // 767
         packet.ReadInt32("Ticket oldest"); // 507
         packet.ReadInt32("Ticket age"); // 508
         packet.ReadWoWString("str2042", len2); // 2042
     }
     packet.ReadInt32E<GMTicketSystemStatus>("System Status");
 }
Example #25
0
        public static void ReadSingleContactBlock(Packet packet, bool onlineCheck)
        {
            var status = packet.ReadByteE<ContactStatus>("Status");

            if (onlineCheck && status == ContactStatus.Offline)
                return;

            packet.ReadInt32<AreaId>("Area");
            packet.ReadInt32("Level");
            packet.ReadInt32E<Class>("Class");
        }
        public static void HandleAddCalendarEvent(Packet packet)
        {
            packet.ReadInt32("Event Time");
            packet.ReadInt32("Invite Count");
            packet.ReadByteE<CalendarEventType>("Event Type");
            packet.ReadInt32<LFGDungeonId>("Dungeon ID");
            packet.ReadInt32("Max Invites");

            var bits496 = packet.ReadBits(8);
            var bits4A4 = packet.ReadBits(22);

            var guid = new byte[bits4A4][];

            for (var i = 0; i < bits4A4; ++i)
            {
                guid[i] = new byte[8];
                packet.StartBitStream(guid[i], 3, 2, 5, 4, 6, 0, 1, 7);
            }

            var bits4A8 = (int)packet.ReadBits(11);

            packet.ReadWoWString("Description", bits4A8);
            packet.ReadWoWString("Title", bits496);

            for (var i = 0; i < bits4A4; ++i)
            {
                packet.ReadByteE<CalendarModerationRank>("Moderation Rank", i);
                packet.ReadXORByte(guid[i], 6);
                packet.ReadXORByte(guid[i], 1);
                packet.ReadXORByte(guid[i], 7);
                packet.ReadXORByte(guid[i], 5);
                packet.ReadXORByte(guid[i], 4);
                packet.ReadXORByte(guid[i], 2);
                packet.ReadByteE<CalendarEventStatus>("Status", i);
                packet.ReadXORByte(guid[i], 3);
                packet.ReadXORByte(guid[i], 0);

                packet.WriteGuid("Guid", guid[i], i);
            }
        }
        public static void HandleInitializeFactions(Packet packet)
        {
            for (var i = 0; i < 256; i++)
            {
                packet.ReadUInt32E<ReputationRank>("Faction Standing", i);
                packet.ReadByteE<FactionFlag>("Faction Flags", i);
            }

            for (var i = 0; i < 256; i++)
            {
                var bit1296 = packet.ReadBit("Count");
            }
        }
        public static void HandleClientCharCreate(Packet packet)
        {
            var nameLen = packet.ReadBits(6);
            var hasTemplateSet = packet.ReadBit();

            packet.ReadByteE<Race>("RaceID");
            packet.ReadByteE<Class>("ClassID");
            packet.ReadByteE<Gender>("SexID");
            packet.ReadByte("SkinID");
            packet.ReadByte("FaceID");
            packet.ReadByte("HairStyleID");
            packet.ReadByte("HairColorID");
            packet.ReadByte("FacialHairStyleID");
            packet.ReadByte("OutfitID");

            for (uint i = 0; i < 3; ++i)
                packet.ReadByte("CustomDisplay", i);

            packet.ReadWoWString("Name", nameLen);

            if (hasTemplateSet)
                packet.ReadInt32("TemplateSetID");
        }
        public static void HandleEnvirenmentalDamageLog(Packet packet)
        {
            packet.ReadPackedGuid128("Victim");

            packet.ReadByteE<EnvironmentDamage>("Type");

            packet.ReadInt32("Amount");
            packet.ReadInt32("Resisted");
            packet.ReadInt32("Absorbed");

            var bit76 = packet.ReadBit("HasLogData");
            if (bit76)
                SpellHandler.ReadSpellCastLogData(packet);
        }
Example #30
0
        public static void HandleAuthResponse(Packet packet)
        {
            var isQueued = packet.ReadBit("Queued");
            var hasAccountInfo = packet.ReadBit("Has account info");

            if (isQueued)
                packet.ReadBit("UnkBit");

            if (hasAccountInfo)
            {
                packet.ReadInt32("Billing Time Remaining");
                packet.ReadByteE<ClientType>("Player Expansion");
                packet.ReadInt32("Unknown UInt32");
                packet.ReadByteE<ClientType>("Account Expansion");
                packet.ReadInt32("Billing Time Rested");
                packet.ReadByteE<BillingFlag>("Billing Flags");
            }

            packet.ReadByteE<ResponseCode>("Auth Code");

            if (isQueued)
                packet.ReadInt32("Queue Position");
        }