Looking at the code for base shooting attacking UFO. It seems that the UFO shield is straightforward added to damage capacity. No shield recharge, bleed through, or any other dogfight like parameters are used. Did I get it right?
if (_ufo->getShield() > 0)
{
int shieldDamage = dmg;
dmg = std::max(0, dmg - _ufo->getShield());
_ufo->setShield(_ufo->getShield() - shieldDamage);
}
_ufo->setDamage(_ufo->getDamage() + dmg, _game->getMod());