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;
 }