From 4ebc37a371927b9f37110ef6ea38b7f03de6f682 Mon Sep 17 00:00:00 2001 From: "nethack.rankin" Date: Thu, 18 May 2006 02:50:33 +0000 Subject: [PATCH] quest artifact handling (trunk only) When the hero receives the quest artifact "got it" message, set the artifact's dknown bit in case the hero is blinded. That message describes the object by name, effectively the same as seeing it up close. (This would have prevented the "now wearing an Eyes of the Overworld" grammar bug for monks but not for non-monks, so the previous fix is still necessary.) --- include/extern.h | 2 +- src/invent.c | 4 ++-- src/quest.c | 9 +++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/include/extern.h b/include/extern.h index cc26e7d0b..a5ac7055a 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1733,7 +1733,7 @@ E void FDECL(free_epri, (struct monst *)); E void NDECL(onquest); E void NDECL(nemdead); -E void NDECL(artitouch); +E void FDECL(artitouch, (struct obj *)); E boolean NDECL(ok_to_quest); E void FDECL(leader_speaks, (struct monst *)); E void NDECL(nemesis_speaks); diff --git a/src/invent.c b/src/invent.c index 8040d0024..f6cf34fc2 100644 --- a/src/invent.c +++ b/src/invent.c @@ -1,4 +1,4 @@ -/* SCCS Id: @(#)invent.c 3.5 2006/04/15 */ +/* SCCS Id: @(#)invent.c 3.5 2006/05/17 */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -259,7 +259,7 @@ struct obj *obj; if (u.uhave.questart) impossible("already have quest artifact?"); u.uhave.questart = 1; - artitouch(); + artitouch(obj); } set_artifact_intrinsic(obj, 1, W_ART); } diff --git a/src/quest.c b/src/quest.c index 116c57806..e261e75ef 100644 --- a/src/quest.c +++ b/src/quest.c @@ -1,4 +1,4 @@ -/* SCCS Id: @(#)quest.c 3.5 2000/05/05 */ +/* SCCS Id: @(#)quest.c 3.5 2006/05/17 */ /* Copyright 1991, M. Stephenson */ /* NetHack may be freely redistributed. See license for details. */ @@ -82,9 +82,14 @@ nemdead() } void -artitouch() +artitouch(obj) +struct obj *obj; { if(!Qstat(touched_artifact)) { + /* in case we haven't seen the item yet (ie, currently blinded), + this quest message describes it by name so mark it as seen */ + obj->dknown = 1; + /* only give this message once */ Qstat(touched_artifact) = TRUE; qt_pager(QT_GOTIT); exercise(A_WIS, TRUE); -- 2.40.0