becoming a corpse when there's already a monster at statue's location)
special level loader didn't support populating several types of special rooms
(ant hole, cockatrice nest, leprechaun hall)
+eating rings while polymorphed didn't handle bonus/penalty for increase damage,
+ increase accuracy, or protection correctly
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
{
int absold, absinc, sgnold, sgninc;
- /* don't include any amount coming from worn rings */
- if (uright && uright->otyp == typ)
+ /* don't include any amount coming from worn rings (caller handles
+ 'protection' differently) */
+ if (uright && uright->otyp == typ && typ != RIN_PROTECTION)
old -= uright->spe;
- if (uleft && uleft->otyp == typ)
+ if (uleft && uleft->otyp == typ && typ != RIN_PROTECTION)
old -= uleft->spe;
absold = abs(old), absinc = abs(inc);
sgnold = sgn(old), sgninc = sgn(inc);
} else {
inc = 0; /* no further increase allowed via this method */
}
+ /* put amount from worn rings back */
+ if (uright && uright->otyp == typ && typ != RIN_PROTECTION)
+ old += uright->spe;
+ if (uleft && uleft->otyp == typ && typ != RIN_PROTECTION)
+ old += uleft->spe;
return old + inc;
}
struct obj *otmp;
{
pline("Magic spreads through your body as you digest the %s.",
- otmp->oclass == RING_CLASS ? "ring" : "amulet");
+ (otmp->oclass == RING_CLASS) ? "ring" : "amulet");
}
STATIC_OVL void