- Хроники
- Goddess of Destruction Awakening
- Исходники
- Присутствуют
- Сборка
- 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));
}
}