public SpellBookContentsInfo(PacketReader reader) { ushort unknown = reader.ReadUInt16(); // always 1 Serial serial = reader.ReadInt32(); ushort itemID = reader.ReadUInt16(); ushort spellbookType = reader.ReadUInt16(); // 1==regular, 101=necro, 201=paladin, 401=bushido, 501=ninjitsu, 601=spellweaving ulong spellBitfields = reader.ReadUInt32() + (((ulong)reader.ReadUInt32()) << 32); // first bit of first byte = spell #1, second bit of first byte = spell #2, first bit of second byte = spell #8, etc Spellbook = new SpellbookData(serial, itemID, spellbookType, spellBitfields); }
public SupportedFeaturesPacket(PacketReader reader) : base(0xB9, "Enable Features") { if (reader.Buffer.Length == 3) Flags = (FeatureFlags)reader.ReadUInt16(); else if (reader.Buffer.Length == 5) Flags = (FeatureFlags)reader.ReadUInt32(); else { Flags = (FeatureFlags)reader.ReadUInt16(); Tracer.Error("Bad feature flag size in SupportedFeaturesPacket; expected 16 or 32 bit features, received {0} bits.", (reader.Buffer.Length - 1) * 8); } }