From 0a58b7a540441c1bb82ef6060caede68041366fe Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Wed, 1 Jan 2025 21:37:28 +0200 Subject: [PATCH] Tweak tourist xp gain from new monsters Remove the XP gain for tourist seeing a new type of monster nearby, as it apparently made tourists a bit harder by forcing early level gains. Monsters next to hero are still marked as seen close-up, but fix the code so it doesn't count undetected monsters. Tourists still gain XP from "taking photos" of new types of monsters, but only if they haven't seen the monster close up before. (No actual photos are taken.) --- doc/fixes3-7-0.txt | 2 +- src/mon.c | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index 4fa4c3d7f..5944b188e 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -2749,7 +2749,7 @@ enlightenment/attribute disclosure for saving-grace: include a line for have "X " for explore mode, or "D " for debug mode if any of the games shown in its menu weren't saved during normal play; if they're all normal play, the prefix is suppressed -tourists gain experience by seeing new types of creatures up close, and +tourists gain experience by "taking photos" of new creatures, and going to new dungeon levels healers gain experience by healing pets blessed scroll of destroy armor asks which armor to destroy diff --git a/src/mon.c b/src/mon.c index 93aad677a..545283c8d 100644 --- a/src/mon.c +++ b/src/mon.c @@ -5804,7 +5804,8 @@ adj_erinys(unsigned abuse) pm->difficulty = min(10 + (u.ualign.abuse / 3), 25); } -/* mark monster type as seen from close-up */ +/* mark monster type as seen from close-up, + if we haven't seen it nearby before */ void see_monster_closeup(struct monst *mtmp) { @@ -5823,17 +5824,13 @@ see_nearby_monsters(void) { coordxy x, y; - /* currently used only for tourists ... */ - if (Blind || !Role_if(PM_TOURIST)) - return; - for (x = u.ux - 1; x <= u.ux + 1; x++) for (y = u.uy - 1; y <= u.uy + 1; y++) if (isok(x, y) && MON_AT(x, y)) { struct monst *mtmp = m_at(x, y); - if (canseemon(mtmp)) - see_monster_closeup(mtmp); + if (canspotmon(mtmp) && !mtmp->mundetected && !M_AP_TYPE(mtmp)) + svm.mvitals[monsndx(mtmp->data)].seen_close = TRUE; } }