private static function CalculateRangedAttackPower($recalculate = false)
 {
     if (!self::IsCorrect()) {
         WoW_Log::WriteError('%s : character was not found.', __METHOD__);
         return false;
     }
     if (isset(self::$stats_holder['ranged']['attack_power']) && !$recalculate) {
         return true;
     }
     $multipler = WoW_Utils::GetFloatValue(self::GetDataField(UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER), 8);
     if ($multipler < 0) {
         $multipler = 0;
     } else {
         $multipler += 1;
     }
     $effective = self::GetDataField(UNIT_FIELD_RANGED_ATTACK_POWER) * $multipler;
     $buff = self::GetDataField(UNIT_FIELD_RANGED_ATTACK_POWER_MODS) * $multipler;
     $multiple = WoW_Utils::GetFloatValue(self::GetDataField(UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER), 2);
     $posBuff = 0;
     $negBuff = 0;
     if ($buff > 0) {
         $posBuff = $buff;
     } elseif ($buff < 0) {
         $negBuff = $buff;
     }
     $stat = $effective + $buff;
     self::$stats_holder['ranged']['attack_power'] = array('base' => floor($effective), 'effective' => floor($stat), 'increasedDps' => floor(max($stat, 0) / 14), 'petAttack' => floor(WoW_Utils::ComputePetBonus(0, $stat, self::GetClassID())), 'petSpell' => floor(WoW_Utils::ComputePetBonus(1, $stat, self::GetClassID())));
     return true;
 }