public static MaplePacket closeRangeAttack(int cid, int tbyte, int skill, int level, byte display, byte animation, byte speed, List<AttackPair> damage) {
        MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

        mplew.writeShort(SendPacketOpcode.CLOSE_RANGE_ATTACK);
        mplew.writeInt(cid);
        mplew.write(tbyte);
        if (skill > 0) {
            mplew.write(level);
            mplew.writeInt(skill);
        } else {
            mplew.write(0);
        }
        //mplew.write(0); // Added on v.82
        mplew.write(display);
        mplew.write(animation);
        mplew.write(speed);
        mplew.write(0); // Mastery
        mplew.writeInt(0);  // E9 03 BE FC

        if (skill == 4211006) {
            for (AttackPair oned : damage) {
                if (oned.attack != null) {
                    mplew.writeInt(oned.objectid);
                    mplew.write(0x06);
                    mplew.write(oned.attack.size());
                    for (Integer eachd : oned.attack) {
                        // highest bit set = crit
                        mplew.writeInt(eachd);
                    }
                }
            }
        } else {
            for (AttackPair oned : damage) {
                if (oned.attack != null) {
                    mplew.writeInt(oned.objectid);
                    mplew.write(0x06);
                    for (Integer eachd : oned.attack) {
                        // highest bit set = crit
                        mplew.writeInt(eachd);
                    }
                }
            }
        }
        return mplew.getPacket();
    }