Make Death revive faster

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.
This commit is contained in:
Pasi Kallinen
2020-12-13 12:28:45 +02:00
parent 02ba5e4811
commit 4729062846
4 changed files with 21 additions and 11 deletions
+1
View File
@@ -336,6 +336,7 @@ when fire damage dried a wet towel, it would never reduce the wetness to 0
when water damage wet a towel, the new wetness might randomly become less 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 when the wetness of a towel in inventory changed, persistent inventory wasn't
updated to show that 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 Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
+1
View File
@@ -1415,6 +1415,7 @@ E struct obj *FDECL(mk_named_object,
(int, struct permonst *, int, int, const char *)); (int, struct permonst *, int, int, const char *));
E struct obj *FDECL(rnd_treefruit_at, (int, int)); E struct obj *FDECL(rnd_treefruit_at, (int, int));
E void FDECL(set_corpsenm, (struct obj *, 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(start_corpse_timeout, (struct obj *));
E void FDECL(bless, (struct obj *)); E void FDECL(bless, (struct obj *));
E void FDECL(unbless, (struct obj *)); E void FDECL(unbless, (struct obj *));
+1 -3
View File
@@ -1960,9 +1960,7 @@ long timeout UNUSED;
if (is_rider(mptr) && rn2(99)) { /* Rider usually tries again */ if (is_rider(mptr) && rn2(99)) { /* Rider usually tries again */
action = REVIVE_MON; action = REVIVE_MON;
for (when = 3L; when < 67L; when++) when = rider_revival_time(body, TRUE);
if (!rn2(3))
break;
} else { /* rot this corpse away */ } else { /* rot this corpse away */
You_feel("%sless hassled.", is_rider(mptr) ? "much " : ""); You_feel("%sless hassled.", is_rider(mptr) ? "much " : "");
action = ROT_CORPSE; action = ROT_CORPSE;
+18 -8
View File
@@ -1146,6 +1146,23 @@ int id;
} }
} }
/* 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. * Start a corpse decay or revive timer.
* This takes the age of the corpse into consideration as of 3.4.0. * This takes the age of the corpse into consideration as of 3.4.0.
@@ -1178,15 +1195,8 @@ struct obj *body;
when += (long) (rnz(rot_adjust) - rot_adjust); when += (long) (rnz(rot_adjust) - rot_adjust);
if (is_rider(&mons[body->corpsenm])) { 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; action = REVIVE_MON;
for (when = 12L; when < 500L; when++) when = rider_revival_time(body, FALSE);
if (!rn2(3))
break;
} else if (mons[body->corpsenm].mlet == S_TROLL && !no_revival) { } else if (mons[body->corpsenm].mlet == S_TROLL && !no_revival) {
long age; long age;