26.01.2013, 00:04
|
#10
|
Участник
Регистрация: 23.06.2011
Сообщений: 151
Отблагодарили 36 раз(а)
Рейтинг мнений:
|
Re: Epilogue.L2p. Формула расчета прохождения дебафов
Цитата:
Сообщение от Zubastic
Sp1tfire, в l2j формулы неправильные.
2автор: смотрите оверов, там формулы значительно более правильны, чем на фениксах. Дам вам размышление: насколько я помню та же аркана протекшен не учитывается при расчете шанса, хотя она влияет. Можете потестить на птс гф.
|
Код:
double vulnModifier = calcSkillVulnerability(attacker, target, skill);
Свернуть ↑
Код:
public static double calcSkillVulnerability(L2Character attacker, L2Character target, L2Skill skill)
1729 {
1730 double multiplier = 0; // initialize...
1731
1732 // Get the skill type to calculate its effect in function of base stats
1733 // of the L2Character target
1734 if (skill != null)
1735 {
1736 // first, get the natural template vulnerability values for the target
1737 Stats stat = skill.getStat();
1738 if (stat != null)
1739 {
1740 switch (stat)
1741 {
1742 case AGGRESSION:
1743 multiplier = target.getTemplate().getBaseAggressionVuln();
1744 break;
1745 case BLEED:
1746 multiplier = target.getTemplate().getBaseBleedVuln();
1747 break;
1748 case POISON:
1749 multiplier = target.getTemplate().getBasePoisonVuln();
1750 break;
1751 case STUN:
1752 multiplier = target.getTemplate().getBaseStunVuln();
1753 break;
1754 case ROOT:
1755 multiplier = target.getTemplate().getBaseRootVuln();
1756 break;
1757 case MOVEMENT:
1758 multiplier = target.getTemplate().getBaseMovementVuln();
1759 break;
1760 case SLEEP:
1761 multiplier = target.getTemplate().getBaseSleepVuln();
1762 break;
1763 }
1764 }
1765
1766 // Finally, calculate skilltype vulnerabilities
1767 multiplier = calcSkillTraitVulnerability(multiplier, target, skill);
1768 }
1769 return multiplier;
1770 }
Свернуть ↑Развернуть ↓
Свернуть ↑
Код:
public static double calcSkillTraitVulnerability(double multiplier, L2Character target, L2Skill skill)
1773 {
1774 if (skill == null)
1775 {
1776 return multiplier;
1777 }
1778
1779 final L2TraitType trait = skill.getTraitType();
1780 // First check if skill have trait set
1781 // If yes, use correct vuln
1782 if ((trait != null) && (trait != L2TraitType.NONE))
1783 {
1784 switch (trait)
1785 {
1786 case BLEED:
1787 multiplier = target.calcStat(Stats.BLEED_VULN, multiplier, target, null);
1788 break;
1789 case BOSS:
1790 multiplier = target.calcStat(Stats.BOSS_VULN, multiplier, target, null);
1791 break;
1792 // case DEATH:
1793 case DERANGEMENT:
1794 multiplier = target.calcStat(Stats.DERANGEMENT_VULN, multiplier, target, null);
1795 break;
1796 // case ETC:
1797 case GUST:
1798 multiplier = target.calcStat(Stats.GUST_VULN, multiplier, target, null);
1799 break;
1800 case HOLD:
1801 multiplier = target.calcStat(Stats.ROOT_VULN, multiplier, target, null);
1802 break;
1803 case PARALYZE:
1804 multiplier = target.calcStat(Stats.PARALYZE_VULN, multiplier, target, null);
1805 break;
1806 case PHYSICAL_BLOCKADE:
1807 multiplier = target.calcStat(Stats.PHYSICALBLOCKADE_VULN, multiplier, target, null);
1808 break;
1809 case POISON:
1810 multiplier = target.calcStat(Stats.POISON_VULN, multiplier, target, null);
1811 break;
1812 case SHOCK:
1813 multiplier = target.calcStat(Stats.STUN_VULN, multiplier, target, null);
1814 break;
1815 case SLEEP:
1816 multiplier = target.calcStat(Stats.SLEEP_VULN, multiplier, target, null);
1817 break;
1818 case VALAKAS:
1819 multiplier = target.calcStat(Stats.VALAKAS_VULN, multiplier, target, null);
1820 break;
1821 }
1822 }
1823 else
1824 {
1825 // Since not all traits are handled by trait parameter
1826 // rest is checked by skillType or isDebuff Boolean.
1827 final L2SkillType type = skill.getSkillType();
1828 if (type == L2SkillType.BUFF)
1829 {
1830 multiplier = target.calcStat(Stats.BUFF_VULN, multiplier, target, null);
1831 }
1832 else if ((type == L2SkillType.DEBUFF) || (skill.isDebuff()))
1833 {
1834 multiplier = target.calcStat(Stats.DEBUFF_VULN, multiplier, target, null);
1835 }
1836 else if (type == L2SkillType.STEAL_BUFF)
1837 {
1838 multiplier = target.calcStat(Stats.CANCEL_VULN, multiplier, target, null);
1839 }
1840 }
1841 return multiplier;
1842 }
Свернуть ↑Развернуть ↓
в случае дизарма, arcane protection даст немного резиста
__________________
C# разработчики ваще лютая армия. Сейчас допишу коммент и пойду писать на C# для iOS
|
|
|