public boolean canUseSkill(int skillid) {
        if (skillid < 1000000) {
            return true;
        }
        if (isJounin()) {
            return true;
        }
        byte x = 0;
        if (this.getBuffedValue(MapleBuffStat.MORPH) != null) {
            if (!SkillFactory.getSkill(skillid).canBeLearnedBy(this.getBuffSource(MapleBuffStat.MORPH) / 10000) && SkillFactory.getSkill(this.getBuffSource(MapleBuffStat.MORPH)) != null) {
                cancelAllBuffs();
                changeSkillLevel(SkillFactory.getSkill(skillid), x, x); // false :D!
                return false;
            }
        }
        if (!SpecialStuff.getInstance().isSkillBlocked(mapid)) {
            return true;
        }
        if (skillid < 10000000 && job < 911) {
            return true;
        }
        if (skillid >= 10000000 && job > 910) {
            changeSkillLevel(SkillFactory.getSkill(skillid), x, x); // false :D!
        }
        return false;
    }