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