private static function CalculateCharacterSpirit($recalculate = false)
 {
     if (!self::IsCorrect()) {
         WoW_Log::WriteError('%s : character was not found.', __METHOD__);
         return false;
     }
     if (isset(self::$stats_holder['base_stats']['spirit']) && !$recalculate) {
         return true;
     }
     $baseRatio = array(0, 0.625, 0.2631, 0.2, 0.3571, 0.1923, 0.625, 0.1724, 0.1212, 0.1282, 1, 0.1389);
     $base_spirit = min(50, self::GetStat(STAT_SPIRIT));
     $more_spirit = self::GetStat(STAT_SPIRIT) - $base_spirit;
     $healthRegen = floor($base_spirit * $baseRatio[self::GetClassID()] + $more_spirit * WoW_Utils::GetHRCoefficient(self::$rating, self::GetClassID()));
     $manaRegen = self::IsManaUser() ? floor(sqrt(self::GetStat(STAT_INTELLECT) * self::GetStat(STAT_SPIRIT) * WoW_Utils::GetMRCoefficient(self::$rating, self::GetClassID())) * 5) : -1;
     self::$stats_holder['base_stats']['spirit'] = array('base' => self::GetStat(STAT_SPIRIT) - WoW_Utils::GetFloatValue(self::GetPosStat(STAT_SPIRIT), 0) - WoW_Utils::GetFloatValue(self::GetNegStat(STAT_SPIRIT), 0), 'effective' => self::GetStat(STAT_SPIRIT), 'healthRegen' => $healthRegen, 'manaRegen' => $manaRegen);
     return true;
 }