skill_begin skill_name = [s_grade_penalty] /* [그레이드 페널티] */ skill_id = 4267 level = 1 operate_type = P magic_level = 1 effect = {} skill_end
Реализация вроде бы описана в тоталчекере, но это хф.Да я уже понял, что они тупо зашили пенальти в сам движок, и по грейду, и по перегрузу, и по штрафу после смерти, я вот думаю насколько это правильно, ну тут банально идет проверка на штраф, в конце добавляется пассивный скилл, который не чего не дает, порылся там, его негде и не вызывают и не проверяют, как заглушка, просто для отображения в списке пассивных умений в UI.
<passive id="4267" levels="1" name="Grade Penalty">
<magicLevel value="1"/>
<effects>
<effect type="DEBUFF">
<stats>
<per name="P_ATK_SPEED" value="0.84"/>
<per name="M_ATK_SPEED" value="0.84"/>
<per name="SPEED" value="0.84"/>
<per name="HP_REGEN" value="0.84"/>
<per name="MP_REGEN" value="0.84"/>
<per name="CP_REGEN" value="0.84"/>
<unit name="EVASION" value="4"/>
<unit name="ACCURACY" value="20"/>
</stats>
</effect>
</effects>
</passive>
<passive id="4270" levels="4" name="Weight Penalty">
<magicLevel value="1,1,1,1"/>
<effects>
<effect type="DEBUFF">
<stats>
<per name="SPEED" value="0.0,0.5,0.5,1.0"/>
<per name="HP_REGEN" value="0.5,0.5,0.5,0.9"/>
<per name="MP_REGEN" value="0.5,0.5,0.5,0.9"/>
<per name="CP_REGEN" value="0.5,0.5,0.5,0.9"/>
</stats>
</effect>
</effects>
</passive>
В тоталчекере нет самого механизма. Только эффект, который повышает максимально допустимый уровень грейда.Реализация вроде бы описана в тоталчекере, но это хф.
PATTACKSPEED, MATTACK, MAVOID, MDEFEND, MHIT, MATTACKSPEED, PATTACK, PAVOID, PCRITICAL, PDEFEND, PHIT, PSKILLSPEED, SPEED
enum VALIDATE::Enum : __int32
{
PDEFEND = 0x0,
MDEFEND = 0x1,
PATTACK = 0x2,
MATTACK = 0x3,
PATTACKSPEED = 0x4,
MATTACKSPEED = 0x5,
PSKILLSPEED = 0x6,
PHIT = 0x7,
MHIT = 0x8,
PCRITICAL = 0x9,
MCRITICAL = 0xA,
SPEED = 0xB,
SHIELDDEFENSE = 0xC,
SHIELDDEFENSERATE = 0xD,
PAVOID = 0xE,
MAVOID = 0xF,
MAX = 0x10,
};
Получается штраф от шмота примерно такой на статы?В тоталчекере нет самого механизма. Только эффект, который повышает максимально допустимый уровень грейда.
Достоверно можно сказать, что вот эти параметры точно зависят от грейд-пенальти:
Из вот этого енама:Код:PATTACKSPEED, MATTACK, MAVOID, MDEFEND, MHIT, MATTACKSPEED, PATTACK, PAVOID, PCRITICAL, PDEFEND, PHIT, PSKILLSPEED, SPEED
C++:enum VALIDATE::Enum : __int32 { PDEFEND = 0x0, MDEFEND = 0x1, PATTACK = 0x2, MATTACK = 0x3, PATTACKSPEED = 0x4, MATTACKSPEED = 0x5, PSKILLSPEED = 0x6, PHIT = 0x7, MHIT = 0x8, PCRITICAL = 0x9, MCRITICAL = 0xA, SPEED = 0xB, SHIELDDEFENSE = 0xC, SHIELDDEFENSERATE = 0xD, PAVOID = 0xE, MAVOID = 0xF, MAX = 0x10, };
Логика работы следующая: Каждое изменения стата запускает функцию CCreature::ValidateGradePenalty, которая принимает enum значение как аргумент и дергает что-то не очень понятно в CSharedFactory, что я так понимаю, пересчитывает статы чара во внутреннем методе, после чего в зависимости от изменений, обновляется битсет статов и формируется маска. Поэтому, возможно список изменяющихся параметров больше, а эти просто нужны для отправки обновленной инфы в клиент. У себя я делал просто методом тестов на ПТСке, но формулы не дам, т.к там не только моя работа.
PS: Это 162 тоталчекер, так но я не думаю, что там чет прям сильно поменялось.
PPS: Ну и вишенка, что если вещь с грейд пенальти, то не добавляются ее скилы персонажу, включая SA и ЛС.
1) 1 лвл - грейд пенальти 4 уровень.(в руках АС)
Посмотреть вложение 89075Посмотреть вложение 89077
2) 1 лвл - грейд пенальти нет. В руках стартовый даггер
Посмотреть вложение 89078Посмотреть вложение 89079
Т.е штраф на оружие дает только - точность.
3) 1 лвл - грейд пенальти 4 уровень. На персонаже веспер бижа сет.
Посмотреть вложение 89080Посмотреть вложение 89081
4) 1 лвл - грейд пенальти 3 уровень. Снял 1 акссессуар
Посмотреть вложение 89082Посмотреть вложение 89083
5) 1 лвл - грейд пенальти 2 уровень. Снял еще 1 акссессуар
Посмотреть вложение 89084Посмотреть вложение 89085
6) 1 лвл - грейд пенальти 1 уровень. Снял еще 1 акссессуар
Посмотреть вложение 89086Посмотреть вложение 89087
<skill id="6213" toLevel="4" name="Armor Grade Penalty">
<icon>
<value level="1">icon.skill6213_1</value>
<value level="2">icon.skill6213_2</value>
<value level="3">icon.skill6213_3</value>
<value level="4">icon.skill6213_4</value>
</icon>
<operateType>P</operateType>
<magicCriticalRate>-5</magicCriticalRate>
<magicLevel>1</magicLevel>
<stayAfterDeath>true</stayAfterDeath>
<effects>
<effect name="Speed">
<amount>
<value level="1">-16.67</value>
<value level="2">-30.56</value>
<value level="3">-42.13</value>
<value level="4">-51.77</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="PhysicalEvasion">
<amount>
<value level="1">-2.5</value>
<value level="2">-5</value>
<value level="3">-7.5</value>
<value level="4">-10</value>
</amount>
<mode>DIFF</mode>
</effect>
<effect name="PhysicalAttackSpeed">
<amount>
<value level="1">-16.67</value>
<value level="2">-30.56</value>
<value level="3">-42.13</value>
<value level="4">-51.77</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalAttackSpeed">
<amount>
<value level="1">-16.67</value>
<value level="2">-30.56</value>
<value level="3">-42.13</value>
<value level="4">-51.77</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?