Решил вникнуть в программу, которая считает веса статов и появились некоторые замечания на ее счет. Просто попытаюсь объяснить в чем нестыковки.
https://wago.io/VkuAT-pHb
Ну для начала краткий экскурс, как она работает, правда сам не изучал Lua, так что для меня это тоже темный лес)
1) Есть такая функция COMBAT_LOG_EVENT_UNFILTERED, с которой работают многие аддоны, она возвращает очень много значений о каждом происходящем событии примерно как комбат лог, с ней работают все дамаг метры. В этой функции в виде таблицы содержится вся информация об абилки, в том числе такие параметры как директ или хот, был крит или нет и много всего другого, чего нас не интересует. Я не буду перечислять все параметры которые от туда считывает аддон Маналива, отмечу только те которые используются при расчете самих весов статов, потому что другие нужны только для подготовки этих расчётов, я не проверял, но надеюсь что там все правильно. Значит берутся значения heal, overHeal, crtFlag (крит или нет) и значения SPELL_PERIODIC_HEAL или SPELL_HEAL, последний 2 нужны для определения будет ли вообще считаться для абилки вес хасты. Так как комбат лог работает динамически, то естественно все данные от туда, эти тики хот или касты. Далее перейдем к самим расчетам, т.е к этой функции и ее формулам. Кому интересно сама функция, можете найти ее в коде по ссылке выше.
1) Находит с помощью COMBAT_LOG_EVENT_UNFILTERED спел, считывает его значения, про которые я говорил выше.
2) Считает значения bonusMst, bonusHst, bonusCrt, bonusVrs, поделив текущее значение рейтинга у персонажа на требуемой число рейтинг для 1%, т.е показывает сколько для получения текущего рейтинга в % нужно рейтинга числового, потом эти значения делит на 100 что бы удобнее было считать дальше.
3) Считает mstPerc, как текущий рейтинг мастери в %, деленный на 100 и умноженный на число, равно текущему числу хот на персонаже. Считает crtPerc, как текущий рейтинг крита в %, деленный на 100, аналогично с критом считает версалити и хаст.
4) Считает baseHeal, как heal/(1+mstPerc, 1+vrsPerc, 1+hsrPerc) и еще делит на бонус крита, если игрок таурен, но это уже мелочи, кстати для эльфов ничего не учитывает. Вообщем это значение должно равняться хилу спела, если бы персонаж лишился всех статов кроме спд и даже крита от таурена. Это уже немного странно, потому что если мы посмотрим как у нас рассчитывается сила абилок в игре, в частности в журнале, ни на какой крит она не умножается, а от хаста отдельные тики вообще не бафаются.
5) Считается statHeal = heal - baseHeal - overHeal. Имеется в виду что heal это не только эффективный хил. Т.е statHeal это значение на которое увеличилась сила спела, за счет наших статов, по сравнению с голым персонажем.
Далее там идут проверки кританула ли абилка, если нет то вес крита не учитывается, а если кританула то запускается еще одна функция для расчета статов от семечка (вообще с этим семечком и регровсом в этой проге наверное около трети всех вычислений связаны). Тут начинается самое интересное потому что остальные веса статов рассчитываются по одинаковой формуле вот они:
vrsHeal = bonusVrs / statSum * statHeal
hstHeal = bonusHst / statSum * statHeal
mstHeal =bonusMst / statSum * statHeal
statSum = mstPerc + hstPerc + vrsPer. Это сумма всех бафающих нашу абилку статов, что бы мы смогли поделить конкретный стат на эту сумму и узнать его % вклад в хил от всех статов.
Для версалити и мастери эти формулы поняты, но вот считать хаст таким образом очень странно. Для начала он вообще ни как не меняет силу конкретного хота. Получается что в зачет к весу хасты у нас идут совершенно левые тики хот, а дополнительные тики, которые зависят чисто от хасты уже делятся на +к весам разных статов. Но вообщем эту формулу можно понять, ведь число доп тиков пропорционально увеличению рейтинга скорости и эта функция добирает с доп тиков недостающий хил, но это работает только для реджувки. А вот для буйного роста уже не получается считать по этой формуле, потому что там сила тиков убывает, т.е мы не может с одного тика убрать какой то процент хила, а потом такой же процент накинуть с другого. Так что пока трудно говорить об объективности этой проги.