diff --git a/src/powder.c b/src/powder.c index f83c79008..154fbf20e 100644 --- a/src/powder.c +++ b/src/powder.c @@ -2483,8 +2483,9 @@ void create_box(int x1, int y1, int x2, int y2, int c) create_parts(i, j, 0, 0, c); } -int flood_parts(int x, int y, int c, int cm, int bm) +int flood_parts(int x, int y, int fullc, int cm, int bm) { + int c = fullc&0xFF; int x1, x2, dy = (c=CELL+dy && x1==x2 && ((pmap[y-1][x1-1]&0xFF)==PT_INST||(pmap[y-1][x1-1]&0xFF)==PT_SPRK) && ((pmap[y-1][x1]&0xFF)==PT_INST||(pmap[y-1][x1]&0xFF)==PT_SPRK) && ((pmap[y-1][x1+1]&0xFF)==PT_INST || (pmap[y-1][x1+1]&0xFF)==PT_SPRK) && (pmap[y-2][x1-1]&0xFF)!=PT_INST && ((pmap[y-2][x1]&0xFF)==PT_INST ||(pmap[y-2][x1]&0xFF)==PT_SPRK) && (pmap[y-2][x1+1]&0xFF)!=PT_INST) - flood_parts(x1, y-2, co, cm, bm); + flood_parts(x1, y-2, fullc, cm, bm); else if (y>=CELL+dy) for (x=x1; x<=x2; x++) if ((pmap[y-1][x]&0xFF)!=PT_SPRK) @@ -2564,14 +2565,14 @@ int flood_parts(int x, int y, int c, int cm, int bm) if (x==x1 || x==x2 || y>=YRES-CELL-1 || (pmap[y-1][x-1]&0xFF)==PT_INST || (pmap[y-1][x+1]&0xFF)==PT_INST || (pmap[y+1][x-1]&0xFF)==PT_INST || ((pmap[y+1][x]&0xFF)!=PT_INST&&(pmap[y+1][x]&0xFF)!=PT_SPRK) || (pmap[y+1][x+1]&0xFF)==PT_INST) - flood_parts(x, y-dy, co, cm, bm); + flood_parts(x, y-dy, fullc, cm, bm); } if (y=CELL+dy) for (x=x1; x<=x2; x++) if ((pmap[y-dy][x]&0xFF)==cm && bmap[(y-dy)/CELL][x/CELL]==bm) - if (!flood_parts(x, y-dy, co, cm, bm)) + if (!flood_parts(x, y-dy, fullc, cm, bm)) return 0; if (y