Maybe something like:
float multiple = ap / 410 + m_spellInfo->DmgMultiplier[effect_idx];
if (m_caster->GetPower(POWER_ENERGY) >= 30) {
damage += int32(30 * multiple);
damage += int32(((Player*)m_caster)->GetComboPoints() * ap * 7 / 100);
m_caster->SetPower(POWER_ENERGY, m_caster->GetPower(POWER_ENERGY) - 30);
}
else {
damage += int32(m_caster->GetPower(POWER_ENERGY) * multiple);
damage += int32(((Player*)m_caster)->GetComboPoints() * ap * 7 / 100);
m_caster->SetPower(POWER_ENERGY, 0);
}
or
float multiple = ap / 410 + m_spellInfo->DmgMultiplier[effect_idx];
damage += int32(min(m_caster->GetPower(POWER_ENERGY), 30) * multiple);
damage += int32(((Player*)m_caster)->GetComboPoints() * ap * 7 / 100);
m_caster->SetPower(POWER_ENERGY, max(m_caster->GetPower(POWER_ENERGY) - 30, 0);