// Constructor
        public CombatItem(long time, ulong srcAgent, ulong dstAgent, int value, int buffDmg, uint overstackValue,
                          uint skillId, ushort srcInstid, ushort dstInstid, ushort srcMasterInstid,
                          ushort dstMasterInstid, byte iff, byte isBuff,
                          byte result, byte isActivation,
                          byte isBuffRemove, byte isNinety, byte isFifty, byte isMoving,
                          byte isStateChange, byte isFlanking, byte isShields, byte isOffcycle, uint pad)
        {
            this.Time       = time;
            SrcAgent        = srcAgent;
            DstAgent        = dstAgent;
            Value           = value;
            BuffDmg         = buffDmg;
            OverstackValue  = overstackValue;
            SkillID         = skillId;
            SrcInstid       = srcInstid;
            DstInstid       = dstInstid;
            SrcMasterInstid = srcMasterInstid;
            DstMasterInstid = dstMasterInstid;
            IFF             = ParseEnum.GetIFF(iff);
            IsBuff          = isBuff;
            Result          = result;
            IsActivation    = ParseEnum.GetActivation(isActivation);
            IsBuffRemove    = ParseEnum.GetBuffRemove(isBuffRemove);
            IsNinety        = isNinety;
            IsFifty         = isFifty;
            IsMoving        = isMoving;
            IsStateChange   = ParseEnum.GetStateChange(isStateChange);
            IsFlanking      = isFlanking;
            IsShields       = isShields;
            IsOffcycle      = isOffcycle;
            Pad             = pad;
            // break pad
            var pads = BitConverter.GetBytes(Pad);

            Pad1 = pads[0];
            Pad2 = pads[1];
            Pad3 = pads[2];
            Pad4 = pads[3];
        }
        private static CombatItem ReadCombatItemRev1(BinaryReader reader)
        {
            // 8 bytes: time
            long time = reader.ReadInt64();

            // 8 bytes: src_agent
            ulong srcAgent = reader.ReadUInt64();

            // 8 bytes: dst_agent
            ulong dstAgent = reader.ReadUInt64();

            // 4 bytes: value
            int value = reader.ReadInt32();

            // 4 bytes: buff_dmg
            int buffDmg = reader.ReadInt32();

            // 4 bytes: overstack_value
            uint overstackValue = reader.ReadUInt32();

            // 4 bytes: skill_id
            uint skillId = reader.ReadUInt32();

            // 2 bytes: src_instid
            ushort srcInstid = reader.ReadUInt16();

            // 2 bytes: dst_instid
            ushort dstInstid = reader.ReadUInt16();

            // 2 bytes: src_master_instid
            ushort srcMasterInstid = reader.ReadUInt16();
            // 2 bytes: dst_master_instid
            ushort dstmasterInstid = reader.ReadUInt16();

            // 1 byte: iff
            ParseEnum.IFF iff = ParseEnum.GetIFF(reader.ReadByte());

            // 1 byte: buff
            byte buff = reader.ReadByte();

            // 1 byte: result
            byte result = reader.ReadByte();

            // 1 byte: is_activation
            ParseEnum.Activation isActivation = ParseEnum.GetActivation(reader.ReadByte());

            // 1 byte: is_buffremove
            ParseEnum.BuffRemove isBuffRemove = ParseEnum.GetBuffRemove(reader.ReadByte());

            // 1 byte: is_ninety
            byte isNinety = reader.ReadByte();

            // 1 byte: is_fifty
            byte isFifty = reader.ReadByte();

            // 1 byte: is_moving
            byte isMoving = reader.ReadByte();

            // 1 byte: is_statechange
            ParseEnum.StateChange isStateChange = ParseEnum.GetStateChange(reader.ReadByte());

            // 1 byte: is_flanking
            byte isFlanking = reader.ReadByte();

            // 1 byte: is_flanking
            byte isShields = reader.ReadByte();
            // 1 byte: is_flanking
            byte isOffcycle = reader.ReadByte();
            // 4 bytes: pad
            uint pad = reader.ReadUInt32();

            //save
            // Add combat
            return(new CombatItem(time, srcAgent, dstAgent, value, buffDmg, overstackValue, skillId,
                                  srcInstid, dstInstid, srcMasterInstid, dstmasterInstid, iff, buff, result, isActivation, isBuffRemove,
                                  isNinety, isFifty, isMoving, isStateChange, isFlanking, isShields, isOffcycle, pad));
        }