Overhaul of priest donations
The old code had two main problems: a) it was very difficult for unspoiled players to figure out how it worked (because donating too much got you a bad result, and the exact amount you needed depended on magic numbers that weren't stated in game, and because you had to hide your visible gold to get a good result); b) for players who knew the mechanics, it was somewhat exploitable and also somewhat tedious to make use of (due to needing to hide visible gold before donating). This change preserves the spirit of the previous code whilst making things more transparent for new players and less tedious for existing players: the donation amounts for the various effects are still roughly the same (but randomized), but the amounts you need to donate for clairvoyance and for protection are explicitly stated (and as before, the alignment reset is done by donating an unnecessarily large amount and isn't explicitly stated as an option). If you have a lot of visible gold, you still need to donate a sizeable proportion of it to get a useful effect, but now you get a larger reward to compensate for the larger donation (to the extent that doing this gives comparable results to doing it as a series of small donations, removing the incentive to hide your gold before donating). There's also something here for those players who like to squeeze every last point of optimality out of a game: the "obvious" donation strategy gives decent results, but players who are really willing to dig into the mechanics may be able to find a way to get slightly better results on average (which if I've balanced this correctly, will lead to a very long and complicated spoiler). One other change is that this is now based on your peak rather than current level, to fix an exploit in which the character was drained down to level 1 to donate a very large amount of gold (improving by 20 AC points) and then immediately restored back to the previous experience level using a blessed potion of restore ablity. This breaks save compatibility, but is being pushed together with other save-breaking changes to avoid the need for multiple bumps to EDITLEVEL.
This commit is contained in:
@@ -1545,7 +1545,7 @@ extern int monster_census(boolean);
|
||||
extern int msummon(struct monst *);
|
||||
extern void summon_minion(aligntyp, boolean);
|
||||
extern int demon_talk(struct monst *) NONNULLARG1;
|
||||
extern long bribe(struct monst *) NONNULLARG1;
|
||||
extern long bribe(struct monst *, const char *) NONNULLARG12;
|
||||
extern int dprince(aligntyp);
|
||||
extern int dlord(aligntyp);
|
||||
extern int llord(void);
|
||||
|
||||
@@ -98,6 +98,7 @@ struct epri {
|
||||
schar shroom; /* index in rooms */
|
||||
coord shrpos; /* position of shrine */
|
||||
d_level shrlevel; /* level (& dungeon) of shrine */
|
||||
unsigned cheapskate_count; /* number of cheapskate donations */
|
||||
long intone_time, /* used to limit verbosity +*/
|
||||
enter_time, /*+ of temple entry messages */
|
||||
hostile_time, /* forbidding feeling */
|
||||
|
||||
Reference in New Issue
Block a user