示例#1
0
        public static void HandleAttackerStateUpdate(Packet packet)
        {
            var hasLogData = packet.ReadBit("HasLogData");

            if (hasLogData)
            {
                SpellHandler.ReadSpellCastLogData(packet);
            }

            packet.ReadInt32("Size");

            ReadAttackRoundInfo(packet, "AttackRoundInfo");
        }
示例#2
0
        public static void HandleSpellNonMeleeDmgLog(Packet packet)
        {
            packet.ReadPackedGuid128("Me");
            packet.ReadPackedGuid128("CasterGUID");
            packet.ReadPackedGuid128("CastID");

            packet.ReadInt32 <SpellId>("SpellID");
            packet.ReadInt32("SpellXSpellVisualID");
            packet.ReadInt32("Damage");
            packet.ReadInt32("OriginalDamage");
            packet.ReadInt32("OverKill");

            packet.ReadByte("SchoolMask");

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

            packet.ResetBitReader();

            packet.ReadBit("Periodic");

            packet.ReadBitsE <AttackerStateFlags>("Flags", 7);

            var hasDebugData     = packet.ReadBit("HasDebugData");
            var hasLogData       = packet.ReadBit("HasLogData");
            var hasContentTuning = packet.ReadBit("HasContentTuning");

            if (hasLogData)
            {
                SpellHandler.ReadSpellCastLogData(packet, "SpellCastLogData");
            }

            if (hasDebugData)
            {
                ReadSpellNonMeleeDebugData(packet, "DebugData");
            }

            if (hasContentTuning)
            {
                SpellHandler.ReadContentTuningParams(packet, "ContentTuning");
            }
        }
示例#3
0
        public static void ReadSpellDamageShield(Packet packet)
        {
            packet.ReadPackedGuid128("Attacker");
            packet.ReadPackedGuid128("Defender");
            packet.ReadInt32 <SpellId>("SpellID");
            packet.ReadInt32("TotalDamage");
            packet.ReadInt32("OriginalDamage");
            packet.ReadInt32("OverKill");
            packet.ReadInt32("SchoolMask");
            packet.ReadInt32("LogAbsorbed");

            packet.ResetBitReader();

            var bit76 = packet.ReadBit("HasLogData");

            if (bit76)
            {
                SpellHandler.ReadSpellCastLogData(packet);
            }
        }
示例#4
0
        public static void HandleSpellAbsorbLog(Packet packet)
        {
            packet.ReadPackedGuid128("Victim");
            packet.ReadPackedGuid128("Caster");

            packet.ReadInt32("InterruptedSpellID");
            packet.ReadInt32 <SpellId>("SpellID");
            packet.ReadPackedGuid128("ShieldTargetGUID?");
            packet.ReadInt32("Absorbed");
            packet.ReadInt32("OriginalDamage"); // OriginalDamage (before HitResult -> BeforeCrit and Armor etc)

            packet.ResetBitReader();

            var bit100 = packet.ReadBit("HasLogData");

            if (bit100)
            {
                SpellHandler.ReadSpellCastLogData(packet);
            }
        }
示例#5
0
        public static void HandleSpellHealLog(Packet packet)
        {
            packet.ReadPackedGuid128("TargetGUID");
            packet.ReadPackedGuid128("CasterGUID");

            packet.ReadInt32 <SpellId>("SpellID");
            packet.ReadInt32("Health");
            packet.ReadInt32("OriginalHeal");
            packet.ReadInt32("OverHeal");
            packet.ReadInt32("Absorbed");

            packet.ResetBitReader();

            packet.ReadBit("Crit");
            var hasCritRollMade   = packet.ReadBit("HasCritRollMade");
            var hasCritRollNeeded = packet.ReadBit("HasCritRollNeeded");
            var hasLogData        = packet.ReadBit("HasLogData");
            var hasContentTuning  = packet.ReadBit("HasContentTuning");

            if (hasLogData)
            {
                SpellHandler.ReadSpellCastLogData(packet);
            }

            if (hasCritRollMade)
            {
                packet.ReadSingle("CritRollMade");
            }

            if (hasCritRollNeeded)
            {
                packet.ReadSingle("CritRollNeeded");
            }

            if (hasContentTuning)
            {
                SpellHandler.ReadContentTuningParams(packet, "ContentTuning");
            }
        }
示例#6
0
        public static void HandleSpellPeriodicAuraLog720(Packet packet)
        {
            packet.ReadPackedGuid128("TargetGUID");
            packet.ReadPackedGuid128("CasterGUID");

            packet.ReadInt32 <SpellId>("SpellID");

            var periodicAuraLogEffectCount = packet.ReadUInt32("PeriodicAuraLogEffectCount");

            packet.ResetBitReader();
            var hasLogData = packet.ReadBit("HasLogData");

            for (var i = 0; i < periodicAuraLogEffectCount; i++)
            {
                ReadPeriodicAuraLogEffectData(packet, "PeriodicAuraLogEffectData");
            }

            if (hasLogData)
            {
                SpellHandler.ReadSpellCastLogData(packet, "SpellCastLogData");
            }
        }