Death will revive faster than the other riders.
Make all the riders revive after 67 turns, instead of 500.
There was practically a zero chance a rider would revive at 500,
so keep it somewhat sensible.
when water damage wet a towel, the new wetness might randomly become less
when the wetness of a towel in inventory changed, persistent inventory wasn't
updated to show that
+make Death revive earlier, and all the Riders after 67 turns at latest
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
(int, struct permonst *, int, int, const char *));
E struct obj *FDECL(rnd_treefruit_at, (int, int));
E void FDECL(set_corpsenm, (struct obj *, int));
+E long FDECL(rider_revival_time, (struct obj *, BOOLEAN_P));
E void FDECL(start_corpse_timeout, (struct obj *));
E void FDECL(bless, (struct obj *));
E void FDECL(unbless, (struct obj *));
if (is_rider(mptr) && rn2(99)) { /* Rider usually tries again */
action = REVIVE_MON;
- for (when = 3L; when < 67L; when++)
- if (!rn2(3))
- break;
+ when = rider_revival_time(body, TRUE);
} else { /* rot this corpse away */
You_feel("%sless hassled.", is_rider(mptr) ? "much " : "");
action = ROT_CORPSE;
}
}
+/* Return the number of turns after which a Rider corpse revives */
+long
+rider_revival_time(body, retry)
+struct obj *body;
+boolean retry;
+{
+ long when;
+ long minturn = retry ? 3L : (body->corpsenm == PM_DEATH) ? 6L : 12L;
+
+ /* Riders have a 1/3 chance per turn of reviving after 12, 6, or 3 turns.
+ Always revive by 67. */
+ for (when = minturn; when < 67L; when++)
+ if (!rn2(3))
+ break;
+ return when;
+}
+
/*
* Start a corpse decay or revive timer.
* This takes the age of the corpse into consideration as of 3.4.0.
when += (long) (rnz(rot_adjust) - rot_adjust);
if (is_rider(&mons[body->corpsenm])) {
- /*
- * Riders always revive. They have a 1/3 chance per turn
- * of reviving after 12 turns. Always revive by 500.
- */
action = REVIVE_MON;
- for (when = 12L; when < 500L; when++)
- if (!rn2(3))
- break;
-
+ when = rider_revival_time(body, FALSE);
} else if (mons[body->corpsenm].mlet == S_TROLL && !no_revival) {
long age;