huisjes@ark.UUCP (Michiel Huisjes) (11/23/85)
A mysterious monster digests you totally--more-- you die...--more-- This is what happened if you were swallowed by a Trapper, Lurker above or Purple worm, which in fact was a chameleon. As soon as the chameleon transformed again, you died. When you kill a chameleon, Hack would say to you that you killed the monster it was pretending to be, as where is should say: You destroyed the chameleon. The bug fixes are included. - Michiel Huisjes. (huisjes@ark.UUCP) {seismo|decvax|philabs}!mcvax!vu44!ark!huisjes === Cut here ====== Cut here ====== Cut here ====== Cut here ====== Cut here === *** hack.bug.mon.c Sat Nov 23 10:56:03 1985 --- hack.mon.c Sat Nov 23 10:46:51 1985 *************** *** 655,661 #define NEW_SCORING #endif lint register int tmp,tmp2,nk,x,y; ! register struct permonst *mdat = mtmp->data; extern long newuexp(); if(mtmp->cham) mdat = PM_CHAMELEON; --- 655,661 ----- #define NEW_SCORING #endif lint register int tmp,tmp2,nk,x,y; ! register struct permonst *mdat; extern long newuexp(); if(mtmp->cham) mtmp->data = PM_CHAMELEON; *************** *** 658,664 register struct permonst *mdat = mtmp->data; extern long newuexp(); ! if(mtmp->cham) mdat = PM_CHAMELEON; if(Blind) pline("You destroy it!"); else { pline("You destroy %s!", --- 658,665 ----- register struct permonst *mdat; extern long newuexp(); ! if(mtmp->cham) mtmp->data = PM_CHAMELEON; ! mdat = mtmp->data; if(Blind) pline("You destroy it!"); else { pline("You destroy %s!", *************** *** 786,791 #ifndef NOWORM if(mtmp->wormno) wormdead(mtmp); /* throw tail away */ #endif NOWORM hpn = mtmp->mhp; hpd = (mtmp->data->mlevel)*8; if(!hpd) hpd = 4; --- 787,802 ----- #ifndef NOWORM if(mtmp->wormno) wormdead(mtmp); /* throw tail away */ #endif NOWORM + if (u.ustuck == mtmp) { + if (u.uswallow) { + u.uswallow = 0; + u.uswldtim = 0; + mnexto (mtmp); + docrt (); + prme (); + } + u.ustuck = 0; + } hpn = mtmp->mhp; hpd = (mtmp->data->mlevel)*8; if(!hpd) hpd = 4;