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