Article View: net.games.hack
Article #649Re: Killing skopkeepers - actually two bug fixes
From: Andries Brouwer
Date: Wed, 22 May 1985 02:53
Date: Wed, 22 May 1985 02:53
113 lines
4420 bytes
4420 bytes
In article <207@uthub.UUCP> ron@uthub.UUCP (Ron Wessels) writes:
>While I'm talking about it, there's a bug in that code, too. If you
>do anything that overlays the screen (like reading a scroll of gold
>detection or taking inventory), only monsters that have moved are
>redrawn. I have sent my analysis and suggested fix to aeb@mcvax with
>the request that a correct fix be posted. Stay tuned, folks.
Yes - below a diff that probably fixes this and some other problem
with the display when you are blind.
{ Throw a tripe ration at your dog while blind & 'telepathic'; now the 'd'
disappears. }
Of course this is not the right fix - all display routines should
be rewritten - but it improves things a tiny little bit again.
The second diff fixes a small problem in mklev: it was possible to have
secret doors that had a '+' on the level map; now one could not enter
this position until after some searching.
As a final remark: since the distribution of 1.0.2 people have reported
a relatively large number of bugs/fixes/enhancements (perhaps some 20?)
and I plan to send out an ed script that converts 1.0.2 into 1.0.3.
Thus, 1.0.3 will be essentially identical to 1.0.2 - no new features,
but it will contain a System V version of hack.tty.c.
The ed script will be about 40K. I hope people have preserved an
unadulterated copy of the 1.0.2 distribution.
I'll be abroad for three weeks and will need another week to catch up
reading mail & news, so you should expect this posting about a month
from now.
And now for the fixes.
hack.pri.c:
187a188
> register struct monst *mtmp;
194c195,197
< if(!Invis){
---
>
> /* Some ridiculous code to get display of @ and monsters (almost) right */
> if(!Invis || See_invisible) {
200,202c203
< #ifdef RIDICULOUS_CODE
< /* %% - is this really necessary? - it causes bugs when Blind */
< /* declare mtmp */
---
> seemons(); /* reset old positions */
204,207c205,207
< if(mtmp->mdispl && !(room = &levl[mtmp->mx][mtmp->my])->new &&
< !room->seen)
< mtmp->mdispl = 0;
< #endif RIDICULOUS_CODE
---
> mtmp->mdispl = 0;
> seemons(); /* force new positions to be shown */
> /* This nonsense should disappear soon --------------------------------- */
225a226,227
> register struct monst *mtmp;
>
229a232,238
>
> seemons(); /* reset old positions */
> for(mtmp = fmon; mtmp; mtmp = mtmp->nmon)
> if(mtmp->mx >= xmin && mtmp->my < ymax)
> mtmp->mdispl = 0;
> seemons(); /* force new positions to be shown */
>
385d393
< register struct monst *mtmp = m_at(x,y);
389,392c397
< if(x == u.ux && y == u.uy && !Invis)
< return;
< if(!mtmp || (mtmp->minvis && !See_invisible) ||
< (mtmp->mhide && o_at(x,y))){
---
> if(!vism_at(x,y)) {
462,468c467,476
< vism_at(x,y) register x,y; {
< register struct monst *mtmp;
< register int csi = (See_invisible != 0);
< return((x == u.ux && y == u.uy && (!Invis || csi)) ? 1 :
< ((mtmp = m_at(x,y)) && (!mtmp->minvis || csi) &&
< (!mtmp->mhide || !o_at(mtmp->mx,mtmp->my)))
< ? cansee(x,y) : 0);
---
> vism_at(x,y)
> register x,y;
> {
> register struct monst *mtmp;
>
> return((x == u.ux && y == u.uy && (!Invis || See_invisible))
> ? 1 :
> (mtmp = m_at(x,y))
> ? ((Blind && Telepat) || canseemon(mtmp)) :
> 0);
hack.mklev.c
***************
*** 341,346
register struct mkroom *broom;
register tmp;
levl[x][y].typ = type;
if(type == DOOR)
levl[x][y].scrsym ='+';
--- 343,350 -----
register struct mkroom *broom;
register tmp;
+ if(!IS_WALL(levl[x][y].typ)) /* avoid SDOORs with '+' as scrsym */
+ type = DOOR;
levl[x][y].typ = type;
if(type == DOOR)
levl[x][y].scrsym = '+';
Technical Details
Message-ID:
<669@mcvax.UUCP>Path:
arc1-ca.pugleaf.net!utzoo!linus!philabs!cmcl2!seismo!mcvax!aebReferences:
<151@ucdavis.UUCP> <21200004@prism.UUCP> <142@utflis.UUCP> <207@uthub.UUCP>Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83 (MC840302); site mcvax.UUCP Path: arc1-ca.pugleaf.net!utzoo!linus!philabs!cmcl2!seismo!mcvax!aeb From: aeb@mcvax.UUCP (Andries Brouwer) Newsgroups: net.games.hack Subject: Re: Killing skopkeepers - actually two bug fixes Message-ID: <669@mcvax.UUCP> Date: Tue, 21-May-85 22:53:15 EDT Article-I.D.: mcvax.669 Posted: Tue May 21 22:53:15 1985 Date-Received: Fri, 24-May-85 20:27:28 EDT References: <151@ucdavis.UUCP> <21200004@prism.UUCP> <142@utflis.UUCP> <207@uthub.UUCP> Reply-To: aeb@mcvax.UUCP (Andries Brouwer) Organization: CWI, Amsterdam Lines: 113