public static void SkillEffect(LittleEndianAccessor slea, MapleCharacter chr) {
        //slea.readInt(); // idk v149.2 
        int skillId = slea.readInt();
        if (skillId >= 91000000 && skillId < 200000000) {
            chr.getClient().getSession().write(CWvsContext.enableActions());
            System.out.println("Skill Effect Return 1");
            return;
        }
        byte level = slea.readByte();
        short direction = slea.readShort();
        byte unk = slea.readByte();

        Skill skill = SkillFactory.getSkill(GameConstants.getLinkedAttackSkill(skillId));
        if ((chr == null) || (skill == null) || (chr.getMap() == null)) {
            System.out.println("Skill Effect Return 2");
            return;
        }
        int skilllevel_serv = chr.getTotalSkillLevel(skill);

        if ((skilllevel_serv > 0) && (skilllevel_serv == level) && ((skillId == 33101005) || (skill.isChargeSkill()))) {
            chr.setKeyDownSkill_Time(System.currentTimeMillis());
            if (skillId == 33101005) {
                chr.setLinkMid(slea.readInt(), 0);
            }
            chr.getMap().broadcastMessage(chr, CField.skillEffect(chr, skillId, level, direction, unk), false);
        }
    }