Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Player::UpdateParryPercentage()
- {
- static const float parry_cap[MAX_CLASSES] = {
- 47.003525f, // Warrior
- 47.003525f, // Paladin
- 0.0f, // Hunter
- 0.0f, // Rogue
- 0.0f, // Priest
- 47.003525f, // DK
- 0.0f, // Shaman
- 0.0f, // Mage
- 0.0f, // Warlock
- 0.0f, // ??
- 0.0f // Druid
- };
- static const float k[MAX_CLASSES] = {
- 0.9560f, // Warrior
- 0.9560f, // Paladin
- 0.0f, // Hunter
- 0.0f, // Rogue
- 0.0f, // Priest
- 0.9560f, // DK
- 0.0f, // Shaman
- 0.0f, // Mage
- 0.0f, // Warlock
- 0.0f, // ??
- 0.0f // Druid
- };
- // No parry
- float value = 0.0f;
- if (CanParry())
- {
- float parryFromDefense = (int32(GetRatingBonusValue(CR_DEFENSE_SKILL))) * 0.04f;
- //float parryFromDefense = (GetSkillValue(SKILL_DEFENSE) - GetMaxSkillValueForLevel()) * 0.04f;
- float parryFromRating = GetRatingBonusValue(CR_PARRY);
- uint32 pclass = getClass()-1;
- float coef = k[pclass] / (parryFromDefense + parryFromRating);
- float avoidance = 1 / parry_cap[pclass] + coef;
- float diminished = 1 / avoidance;
- value = diminished;
- // no diminished
- value += GetTotalAuraModifier(SPELL_AURA_MOD_PARRY_PERCENT);
- value += 5.0f;
- value += (GetSkillValue(SKILL_DEFENSE) - GetMaxSkillValueForLevel()) * 0.04f;
- value = value < 0.0f ? 0.0f : value;
- }
- SetStatFloatValue(PLAYER_PARRY_PERCENTAGE, value);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement