Grade Penalty

nesss

Единомышленник
Участник
Сообщения
163
Розыгрыши
0
Решения
3
Репутация
-2
Реакции
14
Баллы
130
Хроники
  1. Interlude
Исходники
Присутствуют
Сборка
Собственная
Всем привет, подскажите пожалуйста, какие характеристики и на сколько уменьшает Grade Penalty в Interlude, в сборках Interlude смотрел, там идет и на оружие и на броню, хотя на оружие в Interlude умения с ID 6209 не существует, есть только 4267, и оно только 1го уровня, я так понимаю там че-то намутили по подобию хроник повыше.
 
Интерлюд
Код:
skill_begin    skill_name = [s_grade_penalty]    /* [그레이드 페널티] */    skill_id = 4267    level = 1    operate_type = P    magic_level = 1    effect = {}    skill_end
Видимо сама реализация не в скиле.
 
Да я уже понял, что они тупо зашили пенальти в сам движок, и по грейду, и по перегрузу, и по штрафу после смерти, я вот думаю насколько это правильно, ну тут банально идет проверка на штраф, в конце добавляется пассивный скилл, который не чего не дает, порылся там, его негде и не вызывают и не проверяют, как заглушка, просто для отображения в списке пассивных умений в UI.
 
Реализация вроде бы описана в тоталчекере, но это хф.
 

Вложения

  • Screenshot_1.webp
    257,5 КБ · Просмотры: 13
Так ну собрав все в кучу, могу сделать такой вывод. Характеристики 0.22 0.19 0.16 0.13 0.1 практически одинаковые, то есть нет разницы, станет у тебя 22% от твой скорости бега, или 13%, вот к примеру, 300 скорости, 66 или 39, так же по скорости атаки, у ММ под фул около 2к скорости Матаки, и того 440 и 260, по сути это бессмысленная разница, так вот проанализировав разные сборки, где штрафы зашиты в движок, где из XML берутся, но везде умение пассивное добавляется в список умений, то есть там где в движке происходит умножение модификаторов на характеристику умение не как не задействовано, просто заглушка. Так же взять во внимание, что уровней умения в клиенте только 1, конечно можно самому дописать 3 уровня и будет 4, но смысла как описывал выше не вижу, исходя из этого, сделал вот такой XML:
XML:
    <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>
Вот даже с Weight Penalty. Что по этому скажете? То есть таким образом, код в ядре в разы чище, задействовано умение как положено, на мой взгляд.
 
Реализация вроде бы описана в тоталчекере, но это хф.
В тоталчекере нет самого механизма. Только эффект, который повышает максимально допустимый уровень грейда.

Достоверно можно сказать, что вот эти параметры точно зависят от грейд-пенальти:
Код:
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 уровень.(в руках АС)

2) 1 лвл - грейд пенальти нет. В руках стартовый даггер


Т.е штраф на оружие дает только - точность.

3) 1 лвл - грейд пенальти 4 уровень. На персонаже веспер бижа сет.

4) 1 лвл - грейд пенальти 3 уровень. Снял 1 акссессуар

5) 1 лвл - грейд пенальти 2 уровень. Снял еще 1 акссессуар

6) 1 лвл - грейд пенальти 1 уровень. Снял еще 1 акссессуар
 
Последнее редактирование:
Получается штраф от шмота примерно такой на статы?
Уровень 1: 16.7%
Уровень 2: 31%
Уровень 3: 42%
Уровень 4: 50%

Ну у мобиуса к примеру вот такое в армор грейд пинальти:
XML:
    <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>
Ну и судя по скринам, не дается штраф на скорость атаки.


Aristo пасиб за инфу, реализовал блок кристалов и аугмента при вейпон пенальти)
Код:
[29/09 10:23:04] Player Pzychozes weapon penalty applied - all augmentation and ensoul bonuses removed
[29/09 10:23:31] Player Pzychozes weapon penalty removed - all augmentation and ensoul bonuses restored

 
Последнее редактирование:

Похожие темы

Ответы
0
Просмотры
360
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…