I don't think it's quite that good, but I may have it wrong. If I do, please help me correct my spreadsheet.
- Code:
if (get_equip_race(*weapon) == ISFLAG_ORCISH
&& you.species == SP_HILL_ORC)
{
if (you.religion == GOD_BEOGH && !player_under_penance())
{
#ifdef DEBUG_DIAGNOSTICS
const int orig_damage = damage;
#endif
if (you.piety > 80 || coinflip())
damage++;
damage +=
random2avg(
div_rand_round(
std::min(static_cast<int>(you.piety), 180), 33), 2);
#ifdef DEBUG_DIAGNOSTICS
mprf(MSGCH_DIAGNOSTICS, "Damage: %d -> %d, Beogh bonus: %d",
orig_damage, damage, damage - orig_damage);
#endif
}
if (coinflip())
damage++;
}
Only the last one applies if you are not worshipping Beogh. It's actually not +1, but a 50% chance of +1, so I treat it as +0.5 in my spreadsheet.
Then, if you have piety over 80 (I think thats *** or ****), you get another 50% chance of +1, for effectively another +0.5.
Then, it twice rolls a random number up to your piety or 180, whichever is lower, and divides that by 33, and averages both rolls. Assuming you roll 180 both times, the max you get is +5 as I assume it is rounded.
So the maximum bonus you could get is +7. However, that's a randomized bonus, so the average bonus you would get as an orc with max piety is equivalent to +0,+4, which is twice as good as the demonic / dwarven bonuses.