rangers know launchers (bows), ammo (arrows), and spears regardless
of their race/species; likewise, rogues know all daggers
if the move counter ever reaches 1000000000, end the game
+knights get no metal armor penalty for clerical spells
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
int chance, splcaster, special, statused;
int difficulty;
int skill;
+ /* Knights don't get metal armor penalty for clerical spells */
+ boolean paladin_bonus = Role_if(PM_KNIGHT)
+ && spell_skilltype(spellid(spell)) == P_CLERIC_SPELL;
/* Calculate intrinsic ability (splcaster) */
special = g.urole.spelheal;
statused = ACURR(g.urole.spelstat);
- if (uarm && is_metallic(uarm))
+ if (uarm && is_metallic(uarm) && !paladin_bonus)
splcaster += (uarmc && uarmc->otyp == ROBE) ? g.urole.spelarmr / 2
: g.urole.spelarmr;
else if (uarmc && uarmc->otyp == ROBE)
if (uarms)
splcaster += g.urole.spelshld;
- if (uarmh && is_metallic(uarmh) && uarmh->otyp != HELM_OF_BRILLIANCE)
- splcaster += uarmhbon;
- if (uarmg && is_metallic(uarmg))
- splcaster += uarmgbon;
- if (uarmf && is_metallic(uarmf))
- splcaster += uarmfbon;
+ if (!paladin_bonus) {
+ if (uarmh && is_metallic(uarmh) && uarmh->otyp != HELM_OF_BRILLIANCE)
+ splcaster += uarmhbon;
+ if (uarmg && is_metallic(uarmg))
+ splcaster += uarmgbon;
+ if (uarmf && is_metallic(uarmf))
+ splcaster += uarmfbon;
+ }
if (spellid(spell) == g.urole.spelspec)
splcaster += g.urole.spelsbon;