All these work same as in OXC, only retaliation odds have a few more parameters in OXCE/OXCE+.
Fire rate formula is as follows:
int fireCountdown = std::max(1, (_ufo->getRules()->getWeaponReload() - 2 * _game->getSavedGame()->getDifficultyCoefficient()));
_ufo->setFireCountdown(RNG::generate(0, fireCountdown) + fireCountdown);
where difficulty coeficient comes from difficulty.rul