From: nethack.allison Date: Thu, 11 May 2006 21:22:06 +0000 (+0000) Subject: Delphi follow-up (trunk only) X-Git-Tag: MOVE2GIT~1023 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4e2b302368671872e29a43eaf3fe8bd0dbae6103;p=nethack Delphi follow-up (trunk only) --- diff --git a/src/hack.c b/src/hack.c index 6bc6b0abe..724839d97 100644 --- a/src/hack.c +++ b/src/hack.c @@ -13,7 +13,7 @@ STATIC_DCL int FDECL(still_chewing,(XCHAR_P,XCHAR_P)); STATIC_DCL void NDECL(dosinkfall); #endif STATIC_DCL boolean FDECL(findtravelpath, (BOOLEAN_P)); -STATIC_DCL boolean FDECL(monstinroom, (struct permonst *,int,struct monst **)); +STATIC_DCL struct monst *FDECL(monstinroom, (struct permonst *,int)); STATIC_DCL boolean FDECL(doorless_door, (int,int)); STATIC_DCL void FDECL(move_update, (BOOLEAN_P)); @@ -1648,25 +1648,19 @@ stillinwater:; } } -STATIC_OVL boolean -monstinroom(mdat,roomno,mon) +/* returns first matching monster */ +STATIC_OVL struct monst * +monstinroom(mdat,roomno) struct permonst *mdat; -struct monst **mon; int roomno; { register struct monst *mtmp; - if (mon) *mon = (struct monst *)0; for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) if(!DEADMONSTER(mtmp) && mtmp->data == mdat && - index(in_rooms(mtmp->mx, mtmp->my, 0), roomno + ROOMOFFSET)) { - /* If the monster is one-of-a-kind then update mon - * with a pointer to that monster. - */ - if (mon && (mdat->geno & G_UNIQ)) *mon = mtmp; - return(TRUE); - } - return(FALSE); + index(in_rooms(mtmp->mx, mtmp->my, 0), roomno + ROOMOFFSET)) + return mtmp; + return (struct monst *)0; } char * @@ -1808,7 +1802,7 @@ void check_special_room(newlev) register boolean newlev; { - struct monst *mtmp, *uniquemon = (struct monst *)0; + register struct monst *mtmp; char *ptr; move_update(newlev); @@ -1862,24 +1856,26 @@ register boolean newlev; You("enter an anthole!"); break; case BARRACKS: - if(monstinroom(&mons[PM_SOLDIER], roomno, &uniquemon) || - monstinroom(&mons[PM_SERGEANT], roomno, &uniquemon) || - monstinroom(&mons[PM_LIEUTENANT], roomno, &uniquemon) || - monstinroom(&mons[PM_CAPTAIN], roomno, &uniquemon)) + if(monstinroom(&mons[PM_SOLDIER], roomno) || + monstinroom(&mons[PM_SERGEANT], roomno) || + monstinroom(&mons[PM_LIEUTENANT], roomno) || + monstinroom(&mons[PM_CAPTAIN], roomno)) You("enter a military barracks!"); else You("enter an abandoned barracks."); break; case DELPHI: - if(monstinroom(&mons[PM_ORACLE], roomno, &uniquemon)) { - if (uniquemon && !uniquemon->mpeaceful) + { + struct monst *oracle = monstinroom(&mons[PM_ORACLE], + roomno); + if (oracle && !oracle->mpeaceful) verbalize("You're in Delphi, %s.", plname); - else + else verbalize("%s, %s, welcome to Delphi!", Hello((struct monst *) 0), plname); + break; } - break; case TEMPLE: intemple(roomno + ROOMOFFSET); /* fall through */