Grade Penalty

DesperionRED

Путник
Участник
Сообщения
4
Розыгрыши
0
Репутация
0
Реакции
0
Баллы
64
Хроники
  1. The Chaotic Throne 3: Goddess of Destruction
Исходники
Присутствуют
Сборка
L2J_Mobius_11.1_TheSourceOfFlame
Добрый день, решил добавить в сборку Экспертизу и соответственно штраф для неё. С экспертизой проблем не оказалось, она корректно выдается при получении соответствующего уровня, а вот с штрафом проблема. Насколько я понял, её не существует в данной реализации и тут встает вопрос - как мне её добавить? В Java близок к 0, разбираюсь во всём по наитию. Насколько понял, нужно в исходниках в Player.java добавить штраф.

Вопрос к знатокам - данная реализация подойдет?

Java:
  public void refreshExpertisePenalty()

    {

        if (!Config.EXPERTISE_PENALTY)

        {

            return;

        }

        

        final int expertiseLevel = getExpertiseLevel();

        int armorPenalty = 0;

        int weaponPenalty = 0;

        int crystaltype;

        for (Item item : _inventory.getItems())

        {

            if ((item != null) && item.isEquipped() && (item.getItemType() != EtcItemType.ARROW) && (item.getItemType() != EtcItemType.BOLT))

            {

                crystaltype = item.getTemplate().getCrystalType().getLevel();

                if (crystaltype > expertiseLevel)

                {

                    if (item.isWeapon() && (crystaltype > weaponPenalty))

                    {

                        weaponPenalty = crystaltype;

                    }

                    else if (crystaltype > armorPenalty)

                    {

                        armorPenalty = crystaltype;

                    }

                }

            }

        }

        

        boolean changed = false;

        

        // calc weapon penalty

        weaponPenalty = weaponPenalty - expertiseLevel - _expertisePenaltyBonus;

        weaponPenalty = Math.min(Math.max(weaponPenalty, 0), 4);

        if ((_expertiseWeaponPenalty != weaponPenalty) || (getSkillLevel(CommonSkill.WEAPON_GRADE_PENALTY.getId()) != weaponPenalty))

        {

            _expertiseWeaponPenalty = weaponPenalty;

            if (_expertiseWeaponPenalty > 0)

            {

                addSkill(SkillData.getInstance().getSkill(CommonSkill.WEAPON_GRADE_PENALTY.getId(), _expertiseWeaponPenalty));

            }

            else

            {

                removeSkill(getKnownSkill(CommonSkill.WEAPON_GRADE_PENALTY.getId()), false, true);

            }

            changed = true;

        }

        

        // calc armor penalty

        armorPenalty = armorPenalty - expertiseLevel - _expertisePenaltyBonus;

        armorPenalty = Math.min(Math.max(armorPenalty, 0), 4);

        if ((_expertiseArmorPenalty != armorPenalty) || (getSkillLevel(CommonSkill.ARMOR_GRADE_PENALTY.getId()) != armorPenalty))

        {

            _expertiseArmorPenalty = armorPenalty;

            if (_expertiseArmorPenalty > 0)

            {

                addSkill(SkillData.getInstance().getSkill(CommonSkill.ARMOR_GRADE_PENALTY.getId(), _expertiseArmorPenalty));

            }

            else

            {

                removeSkill(getKnownSkill(CommonSkill.ARMOR_GRADE_PENALTY.getId()), false, true);

            }

            changed = true;

        }

        

        if (changed)

        {

            sendPacket(new EtcStatusUpdate(this));

        }

    }
 

Похожие темы

Ответы
4
Просмотры
Назад
Сверху Снизу