public final void handleEnergyCharge(final int skillid, final byte targets) {
        final ISkill echskill = SkillFactory.getSkill(skillid);
        final byte skilllevel = getSkillLevel(echskill);
        if (skilllevel > 0) {
            if (targets > 0) {
                if (getBuffedValue(MapleBuffStat.ENERGY_CHARGE) == null) {
                    echskill.getEffect(skilllevel).applyEnergyBuff(this, true); // Infinity time
                } else {
                    Integer energyLevel = getBuffedValue(MapleBuffStat.ENERGY_CHARGE);

                    if (energyLevel < 10000) {
                        energyLevel += (100 * targets);
                        setBuffedValue(MapleBuffStat.ENERGY_CHARGE, energyLevel);
                        client.getSession().write(MaplePacketCreator.giveEnergyChargeTest(energyLevel));

                        if (energyLevel >= 10000) {
                            energyLevel = 10001;
                        }
                    } else if (energyLevel == 10001) {
                        echskill.getEffect(skilllevel).applyEnergyBuff(this, false); // One with time
                        energyLevel = 10002;
                    }
                }
            }
        }
    }