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