Index: exec.c ================================================================== --- exec.c +++ exec.c @@ -603,17 +603,18 @@ o->image=im; o->dir=d; pflink(n); v=send_message(from,n,MSG_CREATE,NVALUE(0),NVALUE(0),NVALUE(0)); if(o->oflags&OF_DESTROYED) return VOIDLINK; - for(i=25;i>=0;i--) { - xx=x+Xbit(i); yy=y+Ybit(i); + for(y=0;y<5;y++) for(x=0;x<5;x++) { + xx=o->x+x-2; yy=o->y+y-2; if(xx<1 || xx>pfwidth || yy<1 || yy>pfheight) continue; + i=4-x+5*y; m=playfield[xx+yy*64-65]; while(m!=VOIDLINK) { p=objects[m]; - if(p->arrivals&(1<arrivals&(1<x),NVALUE(o->y),v); m=p->up; } } if(o->oflags&OF_DESTROYED) return VOIDLINK; m=objects[n]->up; @@ -646,14 +647,14 @@ // This object is not itself removed from the linked list, since it may be destroyed while enumerating all objects } o->oflags|=OF_DESTROYED; if(why!=8 && !(o->oflags&OF_VISUALONLY)) { // Not checking for stealth; stealth only applies to movement, not destruction - xx=o->x; yy=o->y; - for(i=25;i>=0;i--) { - x=xx+Xbit(i); y=yy+Ybit(i); + for(yy=0;yy<5;yy++) for(xx=0;xx<5;xx++) { + x=o->x+xx-2; y=o->y+yy-2; if(x<1 || x>pfwidth || y<1 || y>pfheight) continue; + i=4-xx+5*yy; n=playfield[x+y*64-65]; while(n!=VOIDLINK) { o=objects[n]; if(o->departures&(1<up;