604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
|
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(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<<i)) if(m!=n) send_message(n,m,MSG_CREATED,NVALUE(o->x),NVALUE(o->y),v);
m=p->up;
}
}
|
|
|
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
|
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(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=x+5*(4-y);
m=playfield[xx+yy*64-65];
while(m!=VOIDLINK) {
p=objects[m];
if(p->arrivals&(1<<i)) if(m!=n) send_message(n,m,MSG_CREATED,NVALUE(o->x),NVALUE(o->y),v);
m=p->up;
}
}
|
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
|
if(o->next!=VOIDLINK) objects[o->next]->prev=o->prev;
// 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
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<<i)) send_message(to,n,MSG_DESTROYED,NVALUE(0),NVALUE(0),NVALUE(why));
n=o->up;
}
}
|
|
|
|
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
|
if(o->next!=VOIDLINK) objects[o->next]->prev=o->prev;
// 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
for(yy=0;yy<5;yy++) for(xx=0;xx<5;xx++) {
x=objects[to]->x+xx-2; y=objects[to]->y+yy-2;
if(x<1 || x>pfwidth || y<1 || y>pfheight) continue;
i=xx+5*(4-yy);
n=playfield[x+y*64-65];
while(n!=VOIDLINK) {
o=objects[n];
if(o->departures&(1<<i)) send_message(to,n,MSG_DESTROYED,NVALUE(0),NVALUE(0),NVALUE(why));
n=o->up;
}
}
|