private static function CalculateRangedHasteRating($recalculate = false) { if (!self::IsCorrect()) { WoW_Log::WriteError('%s : character was not found.', __METHOD__); return false; } if (isset(self::$stats_holder['ranged']['haste_rating']) && !$recalculate) { return true; } $rangedSkillID = WoW_Utils::GetSkillIDFromItemID(self::GetDataField(PLAYER_VISIBLE_ITEM_18_ENTRYID)); if ($rangedSkillID == SKILL_UNARMED) { self::$stats_holder['ranged']['haste_rating'] = array('value' => 0, 'hasteRating' => 0, 'hastePercent' => 0); return true; } self::$stats_holder['ranged']['haste_rating'] = array('value' => round(WoW_Utils::GetFloatValue(self::GetDataField(UNIT_FIELD_RANGEDATTACKTIME), 2) / 1000, 2), 'hasteRating' => round(self::GetDataField(PLAYER_FIELD_COMBAT_RATING_1 + 18)), 'hastePercent' => round(round(self::GetDataField(PLAYER_FIELD_COMBAT_RATING_1 + 18)) / WoW_Utils::GetRatingCoefficient(self::$rating, 19), 2)); return true; }