More update functions cleanup.
This commit is contained in:
parent
88d107f18a
commit
855281295f
@ -1,30 +1,26 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_AMTR(UPDATE_FUNC_ARGS) {
|
||||
int r, rt;
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
int r, rx, ry;
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
rt = parts[r>>8].type;
|
||||
if ((r&0xFF)!=PT_AMTR && (r&0xFF)!=PT_DMND && (r&0xFF)!=PT_CLNE && (r&0xFF)!=PT_PCLN && (r&0xFF)!=PT_NONE && (r&0xFF)!=PT_PHOT && (r&0xFF)!=PT_VOID && (r&0xFF)!=PT_BHOL && (r&0xFF)!=PT_PRTI && (r&0xFF)!=PT_PRTO)
|
||||
{
|
||||
parts[i].life++;
|
||||
if (parts[i].life==3)
|
||||
{
|
||||
parts[i].type = PT_NONE;
|
||||
kill_part(i);
|
||||
return 1;
|
||||
}
|
||||
parts[r>>8].life = 0;
|
||||
parts[r>>8].type = PT_NONE;
|
||||
kill_part(r>>8);
|
||||
if (2>(rand()/(RAND_MAX/100)))
|
||||
create_part(-1, x+nx, y+ny, PT_PHOT);
|
||||
create_part(r>>8, x+rx, y+ry, PT_PHOT);
|
||||
else
|
||||
kill_part(r>>8);
|
||||
pv[y/CELL][x/CELL] -= 5.0f;
|
||||
}
|
||||
}
|
||||
|
@ -1,19 +1,20 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_ARAY(UPDATE_FUNC_ARGS) {
|
||||
int r, nxx, nyy, docontinue, nxi, nyi;
|
||||
int r, nxx, nyy, docontinue, nxi, nyi, rx, ry, nr;
|
||||
if (parts[i].life==0) {
|
||||
int colored =0;
|
||||
for (nx=-1; nx<2; nx++) {
|
||||
for (ny=-1; ny<2; ny++) {
|
||||
if (x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny)) {
|
||||
r = pmap[y+ny][x+nx];
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if ((r&0xFF)==PT_SPRK) {
|
||||
int destroy = (parts[r>>8].ctype==PT_PSCN)?1:0;
|
||||
int nostop = (parts[r>>8].ctype==PT_INST)?1:0;
|
||||
for (docontinue = 1, nxx = 0, nyy = 0, nxi = nx*-1, nyi = ny*-1; docontinue; nyy+=nyi, nxx+=nxi) {
|
||||
for (docontinue = 1, nxx = 0, nyy = 0, nxi = rx*-1, nyi = ry*-1; docontinue; nyy+=nyi, nxx+=nxi) {
|
||||
if (!(x+nxi+nxx<XRES && y+nyi+nyy<YRES && x+nxi+nxx >= 0 && y+nyi+nyy >= 0)) {
|
||||
break;
|
||||
}
|
||||
@ -29,22 +30,21 @@ int update_ARAY(UPDATE_FUNC_ARGS) {
|
||||
parts[nr].ctype = colored;
|
||||
}
|
||||
} else if (!destroy) {
|
||||
if (parts[r>>8].type==PT_BRAY&&parts[r>>8].tmp==0) {
|
||||
if ((r&0xFF)==PT_BRAY&&parts[r>>8].tmp==0) {
|
||||
if (nyy!=0 || nxx!=0) {
|
||||
parts[r>>8].type = PT_BRAY;
|
||||
parts[r>>8].life = 1020;
|
||||
parts[r>>8].tmp = 1;
|
||||
if (!parts[r>>8].ctype)
|
||||
parts[r>>8].ctype = colored;
|
||||
}
|
||||
docontinue = 0;
|
||||
} else if (parts[r>>8].type==PT_BRAY&&parts[r>>8].tmp==1) {
|
||||
} else if ((r&0xFF)==PT_BRAY&&parts[r>>8].tmp==1) {
|
||||
parts[r>>8].life = 1020;
|
||||
//docontinue = 1;
|
||||
}
|
||||
else if (parts[r>>8].type==PT_FILT) {
|
||||
else if ((r&0xFF)==PT_FILT) {
|
||||
colored = parts[r>>8].ctype;
|
||||
} else if (parts[r>>8].type!=PT_INWR && parts[r>>8].type!=PT_ARAY && parts[r>>8].type!=PT_WIFI) {
|
||||
} else if ((r&0xFF)!=PT_INWR && (r&0xFF)!=PT_ARAY && (r&0xFF)!=PT_WIFI) {
|
||||
if (nyy!=0 || nxx!=0) {
|
||||
create_part(-1, x+nxi+nxx, y+nyi+nyy, PT_SPRK);
|
||||
}
|
||||
@ -69,8 +69,6 @@ int update_ARAY(UPDATE_FUNC_ARGS) {
|
||||
}
|
||||
//parts[i].life = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -13,18 +13,18 @@ int update_BCLN(UPDATE_FUNC_ARGS) {
|
||||
}
|
||||
if (!parts[i].ctype)
|
||||
{
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES &&
|
||||
pmap[y+ny][x+nx] &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=PT_CLNE &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=PT_BCLN &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=PT_PCLN &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=PT_STKM &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=PT_STKM2 &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=0xFF)
|
||||
parts[i].ctype = pmap[y+ny][x+nx]&0xFF;
|
||||
int rx, ry;
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES &&
|
||||
pmap[y+ry][x+rx] &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=PT_CLNE &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=PT_BCLN &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=PT_PCLN &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=PT_STKM &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=PT_STKM2 &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=0xFF)
|
||||
parts[i].ctype = pmap[y+ry][x+rx]&0xFF;
|
||||
}
|
||||
else {
|
||||
create_part(-1, x+rand()%3-1, y+rand()%3-1, parts[i].ctype);
|
||||
|
@ -1,23 +1,20 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_BCOL(UPDATE_FUNC_ARGS) {
|
||||
int r;
|
||||
int r, rx, ry;
|
||||
if (parts[i].life<=0) {
|
||||
parts[i].type = PT_NONE;
|
||||
kill_part(i);
|
||||
create_part(-1, x, y, PT_FIRE);
|
||||
create_part(i, x, y, PT_FIRE);
|
||||
return 1;
|
||||
} else if (parts[i].life < 100) {
|
||||
parts[i].life--;
|
||||
create_part(-1, x+rand()%3-1, y+rand()%3-1, PT_FIRE);
|
||||
}
|
||||
|
||||
for (nx=-2; nx<3; nx++)
|
||||
for (ny=-2; ny<3; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-2; rx<3; rx++)
|
||||
for (ry=-2; ry<3; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if (((r&0xFF)==PT_FIRE || (r&0xFF)==PT_PLSM) && 1>(rand()%500))
|
||||
|
@ -1,26 +1,26 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_BMTL(UPDATE_FUNC_ARGS) {
|
||||
int r, rt;
|
||||
int r, rx, ry, rt;
|
||||
if (parts[i].tmp>1) {
|
||||
parts[i].tmp--;
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
rt =parts[r>>8].type;
|
||||
rt = parts[r>>8].type;
|
||||
if ((rt==PT_METL || rt==PT_IRON) && 1>(rand()/(RAND_MAX/100)))
|
||||
{
|
||||
parts[r>>8].type=PT_BMTL;
|
||||
part_change_type(r>>8,x+rx,y+ry,PT_BMTL);
|
||||
parts[r>>8].tmp=(parts[i].tmp<=7)?parts[i].tmp=1:parts[i].tmp-(rand()%5);//rand()/(RAND_MAX/300)+100;
|
||||
}
|
||||
}
|
||||
} else if (parts[i].tmp==1 && 1>rand()%1000) {
|
||||
parts[i].tmp = 0;
|
||||
parts[i].type = PT_BRMT;
|
||||
part_change_type(i,x,y,PT_BRMT);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,29 +1,29 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_BOMB(UPDATE_FUNC_ARGS) {
|
||||
int r, nb;
|
||||
int r, rx, ry, nb;
|
||||
if (parts[i].tmp==1) {
|
||||
for (nx=-2; nx<3; nx++)
|
||||
for (ny=-2; ny<3; ny++)
|
||||
if (x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-2; rx<3; rx++)
|
||||
for (ry=-2; ry<3; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if (parts[r>>8].type!=PT_NONE && parts[r>>8].type!=PT_BOMB) {
|
||||
parts[i].type = PT_NONE;
|
||||
if ((r&0xFF)!=PT_BOMB) {
|
||||
kill_part(i);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
} else if (parts[i].tmp==0) {
|
||||
for (nx=-2; nx<3; nx++)
|
||||
for (ny=-2; ny<3; ny++)
|
||||
if (x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES)
|
||||
for (rx=-2; rx<3; rx++)
|
||||
for (ry=-2; ry<3; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if (parts[r>>8].type!=PT_NONE && parts[r>>8].type!=PT_BOMB && parts[r>>8].type!=PT_DMND && parts[r>>8].type!=PT_CLNE && parts[r>>8].type!=PT_PCLN && parts[r>>8].type!=PT_BCLN) {
|
||||
if ((r&0xFF)!=PT_BOMB && (r&0xFF)!=PT_DMND && (r&0xFF)!=PT_CLNE && (r&0xFF)!=PT_PCLN && (r&0xFF)!=PT_BCLN) {
|
||||
int rad = 8;
|
||||
int nxi;
|
||||
int nxj;
|
||||
@ -55,7 +55,7 @@ int update_BOMB(UPDATE_FUNC_ARGS) {
|
||||
}
|
||||
//create_parts(x, y, 9, 9, PT_BOMB);
|
||||
//create_parts(x, y, 8, 8, PT_NONE);
|
||||
parts[i].type = PT_NONE;
|
||||
kill_part(i);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
@ -3,18 +3,18 @@
|
||||
int update_CLNE(UPDATE_FUNC_ARGS) {
|
||||
if (!parts[i].ctype)
|
||||
{
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES &&
|
||||
pmap[y+ny][x+nx] &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=PT_CLNE &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=PT_BCLN &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=PT_PCLN &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=PT_STKM &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=PT_STKM2 &&
|
||||
(pmap[y+ny][x+nx]&0xFF)!=0xFF)
|
||||
parts[i].ctype = pmap[y+ny][x+nx]&0xFF;
|
||||
int rx, ry;
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES &&
|
||||
pmap[y+ry][x+rx] &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=PT_CLNE &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=PT_BCLN &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=PT_PCLN &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=PT_STKM &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=PT_STKM2 &&
|
||||
(pmap[y+ry][x+rx]&0xFF)!=0xFF)
|
||||
parts[i].ctype = pmap[y+ry][x+rx]&0xFF;
|
||||
}
|
||||
else {
|
||||
create_part(-1, x+rand()%3-1, y+rand()%3-1, parts[i].ctype);
|
||||
|
@ -1,42 +1,41 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_PLNT(UPDATE_FUNC_ARGS) {
|
||||
int r;
|
||||
for (nx=-2; nx<3; nx++)
|
||||
for (ny=-2; ny<3; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
int r, rx, ry, np;
|
||||
for (rx=-2; rx<3; rx++)
|
||||
for (ry=-2; ry<3; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if ((r&0xFF)==PT_WATR && 1>(rand()%250))
|
||||
{
|
||||
parts[i].type = PT_PLNT;
|
||||
parts[r>>8].type = PT_PLNT;
|
||||
parts[r>>8].life = 0;
|
||||
np = create_part(r>>8,x+rx,y+ry,PT_PLNT);
|
||||
if (np<0) continue;
|
||||
parts[np].life = 0;
|
||||
}
|
||||
else if ((r&0xFF)==PT_LAVA && 1>(rand()%250))
|
||||
{
|
||||
part_change_type(i,x,y,PT_FIRE);
|
||||
parts[i].life = 4;
|
||||
parts[i].type = PT_FIRE;
|
||||
}
|
||||
else if ((r&0xFF)==PT_SMKE && (1>rand()%250))
|
||||
{
|
||||
parts[r>>8].type = PT_NONE;
|
||||
kill_part(r>>8);
|
||||
parts[i].life = rand()%60 + 60;
|
||||
}
|
||||
else if ((r&0xFF)==PT_WOOD && (1>rand()%20) && abs(nx+ny)<=2 && VINE_MODE)
|
||||
{
|
||||
int nnx = rand()%3 -1;
|
||||
int nny = rand()%3 -1;
|
||||
if (x+nx+nnx>=0 && y+ny+nny>0 &&
|
||||
x+nx+nnx<XRES && y+ny+nny<YRES && (nnx || nny))
|
||||
if (x+rx+nnx>=0 && y+ry+nny>0 && x+rx+nnx<XRES && y+ry+nny<YRES && (nnx || nny))
|
||||
{
|
||||
if ((pmap[y+ny+nny][x+nx+nnx]>>8)>=NPART||pmap[y+ny+nny][x+nx+nnx])
|
||||
if ((pmap[y+ry+nny][x+rx+nnx]>>8)>=NPART||pmap[y+ry+nny][x+rx+nnx])
|
||||
continue;
|
||||
if (create_part(-1,x+nx+nnx,y+ny+nny,PT_VINE))
|
||||
parts[pmap[y+ny+nny][x+nx+nnx]>>8].temp = parts[i].temp;
|
||||
np = create_part(-1,x+rx+nnx,y+ry+nny,PT_VINE);
|
||||
if (np<0) continue;
|
||||
parts[np].temp = parts[i].temp;
|
||||
}
|
||||
}
|
||||
//if(t==PT_SNOW && (r&0xFF)==PT_WATR && 15>(rand()%1000))
|
||||
@ -44,16 +43,15 @@ int update_PLNT(UPDATE_FUNC_ARGS) {
|
||||
}
|
||||
if (parts[i].life==2)
|
||||
{
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART)
|
||||
continue;
|
||||
if (!r)
|
||||
create_part(-1,x+nx,y+ny,PT_O2);
|
||||
create_part(-1,x+rx,y+ry,PT_O2);
|
||||
}
|
||||
parts[i].life = 0;
|
||||
}
|
||||
|
@ -1,28 +1,27 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_PRTI(UPDATE_FUNC_ARGS) {
|
||||
int r, nnx;
|
||||
int r, nnx, rx, ry;
|
||||
int count =0;
|
||||
parts[i].tmp = (int)((parts[i].temp-73.15f)/100+1);
|
||||
for (ny=-1; ny<2; ny++)
|
||||
for (nx=-1; nx<2; nx++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ry][x+rx];
|
||||
count ++;
|
||||
r = pmap[y+ny][x+nx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if (parts[r>>8].type==PT_SPRK || (parts[r>>8].type!=PT_PRTI && parts[r>>8].type!=PT_PRTO && (ptypes[parts[r>>8].type].falldown!= 0 || pstates[parts[r>>8].type].state == ST_GAS)))
|
||||
if ((r&0xFF)==PT_SPRK || ((r&0xFF)!=PT_PRTI && (r&0xFF)!=PT_PRTO && (ptypes[r&0xFF].falldown!= 0 || pstates[r&0xFF].state == ST_GAS)))
|
||||
for ( nnx=0; nnx<80; nnx++)
|
||||
if (!portal[parts[i].tmp][count-1][nnx])
|
||||
{
|
||||
portal[parts[i].tmp][count-1][nnx] = parts[r>>8].type;
|
||||
portaltemp[parts[i].tmp][count-1][nnx] = parts[r>>8].temp;
|
||||
if (parts[r>>8].type==PT_SPRK)
|
||||
parts[r>>8].type = parts[r>>8].ctype;
|
||||
part_change_type(r>>8,x+rx,y+ry,parts[r>>8].ctype);
|
||||
else
|
||||
parts[r>>8].type = PT_NONE;
|
||||
kill_part(r>>8);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1,16 +1,15 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_PRTO(UPDATE_FUNC_ARGS) {
|
||||
int r, nnx;
|
||||
int r, nnx, rx, ry, np;
|
||||
int count = 0;
|
||||
parts[i].tmp = (int)((parts[i].temp-73.15f)/100+1);
|
||||
for (ny=1; ny>-2; ny--)
|
||||
for (nx=1; nx>-2; nx--)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ry][x+rx];
|
||||
count ++;
|
||||
r = pmap[y+ny][x+nx];
|
||||
if ((r>>8)>=NPART || r)
|
||||
continue;
|
||||
if (!r)
|
||||
@ -22,7 +21,7 @@ int update_PRTO(UPDATE_FUNC_ARGS) {
|
||||
randomness=1;
|
||||
if (randomness>8)
|
||||
randomness=8;
|
||||
if (portal[parts[i].tmp][randomness-1][nnx]==PT_SPRK)//todo. make it look better
|
||||
if (portal[parts[i].tmp][randomness-1][nnx]==PT_SPRK)// TODO: make it look better
|
||||
{
|
||||
create_part(-1,x+1,y,portal[parts[i].tmp][randomness-1][nnx]);
|
||||
create_part(-1,x+1,y+1,portal[parts[i].tmp][randomness-1][nnx]);
|
||||
@ -38,8 +37,9 @@ int update_PRTO(UPDATE_FUNC_ARGS) {
|
||||
}
|
||||
else if (portal[parts[i].tmp][randomness-1][nnx])
|
||||
{
|
||||
create_part(-1,x+nx,y+ny,portal[parts[i].tmp][randomness-1][nnx]);
|
||||
parts[pmap[y+ny][x+nx]>>8].temp = portaltemp[parts[i].tmp][randomness-1][nnx];
|
||||
np = create_part(-1,x+rx,y+ry,portal[parts[i].tmp][randomness-1][nnx]);
|
||||
if (np<0) continue;
|
||||
parts[np].temp = portaltemp[parts[i].tmp][randomness-1][nnx];
|
||||
portal[parts[i].tmp][randomness-1][nnx] = 0;
|
||||
portaltemp[parts[i].tmp][randomness-1][nnx] = 0;
|
||||
break;
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_PUMP(UPDATE_FUNC_ARGS) {
|
||||
int r;
|
||||
int r, rx, ry;
|
||||
if (parts[i].life==10)
|
||||
{
|
||||
if (parts[i].temp>=256.0+273.15)
|
||||
@ -19,12 +19,11 @@ int update_PUMP(UPDATE_FUNC_ARGS) {
|
||||
if (y+CELL<YRES)
|
||||
pv[y/CELL+1][x/CELL+1] += 0.1f*((parts[i].temp-273.15)-pv[y/CELL+1][x/CELL+1]);
|
||||
}
|
||||
for (nx=-2; nx<3; nx++)
|
||||
for (ny=-2; ny<3; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-2; rx<3; rx++)
|
||||
for (ry=-2; ry<3; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if ((r&0xFF)==PT_PUMP)
|
||||
|
@ -1,26 +1,24 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_RIME(UPDATE_FUNC_ARGS) {
|
||||
int r, rt;
|
||||
int r, rx, ry;
|
||||
parts[i].vx = 0;
|
||||
parts[i].vy = 0;
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
rt = parts[r>>8].type;
|
||||
if (rt==PT_SPRK)
|
||||
if ((r&0xFF)==PT_SPRK)
|
||||
{
|
||||
parts[i].type = PT_FOG;
|
||||
part_change_type(i,x,y,PT_FOG);
|
||||
parts[i].life = rand()%50 + 60;
|
||||
}
|
||||
else if (rt==PT_FOG&&parts[r>>8].life>0)
|
||||
else if ((r&0xFF)==PT_FOG&&parts[r>>8].life>0)
|
||||
{
|
||||
parts[i].type = PT_FOG;
|
||||
part_change_type(i,x,y,PT_FOG);
|
||||
parts[i].life = parts[r>>8].life;
|
||||
}
|
||||
}
|
||||
|
@ -1,33 +1,34 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_SHLD1(UPDATE_FUNC_ARGS) {
|
||||
int r, nnx, nny;
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
int r, nnx, nny, rx, ry;
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
else if (parts[r>>8].type==PT_SPRK&&parts[i].life==0)
|
||||
else if ((r&0xFF)==PT_SPRK&&parts[i].life==0)
|
||||
{
|
||||
if (55>rand()%200&&parts[i].life==0)
|
||||
{
|
||||
part_change_type(i,x,y,PT_SHLD2);
|
||||
parts[i].life = 7;
|
||||
}
|
||||
for ( nnx=-1; nnx<2; nnx++)
|
||||
for ( nny=-1; nny<2; nny++)
|
||||
{
|
||||
if (7>rand()%200&&parts[i].life==0)
|
||||
if (!pmap[y+ry+nny][x+rx+nnx])
|
||||
{
|
||||
parts[i].type = PT_SHLD2;
|
||||
parts[i].life = 7;
|
||||
}
|
||||
else if (!pmap[y+ny+nny][x+nx+nnx])
|
||||
{
|
||||
create_part(-1,x+nx+nnx,y+ny+nny,PT_SHLD1);
|
||||
create_part(-1,x+rx+nnx,y+ry+nny,PT_SHLD1);
|
||||
//parts[pmap[y+ny+nny][x+nx+nnx]>>8].life=7;
|
||||
}
|
||||
}
|
||||
else if (parts[r>>8].type==PT_SHLD3&&4>rand()%10)
|
||||
}
|
||||
else if ((r&0xFF)==PT_SHLD3&&4>rand()%10)
|
||||
{
|
||||
parts[i].type=PT_SHLD2;
|
||||
part_change_type(i,x,y,PT_SHLD2);
|
||||
parts[i].life = 7;
|
||||
}
|
||||
}
|
||||
@ -35,37 +36,39 @@ int update_SHLD1(UPDATE_FUNC_ARGS) {
|
||||
}
|
||||
|
||||
int update_SHLD2(UPDATE_FUNC_ARGS) {
|
||||
int r, nnx, nny;
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
int r, nnx, nny, rx, ry, np;
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART)
|
||||
continue;
|
||||
if (!r && parts[i].life>0)
|
||||
create_part(-1,x+nx,y+ny,PT_SHLD1);
|
||||
create_part(-1,x+rx,y+ry,PT_SHLD1);
|
||||
if (!r)
|
||||
continue;
|
||||
else if (parts[r>>8].type==PT_SPRK&&parts[i].life==0)
|
||||
else if ((r&0xFF)==PT_SPRK&&parts[i].life==0)
|
||||
{
|
||||
if (25>rand()%200&&parts[i].life==0)
|
||||
{
|
||||
part_change_type(i,x,y,PT_SHLD3);
|
||||
parts[i].life = 7;
|
||||
}
|
||||
for ( nnx=-1; nnx<2; nnx++)
|
||||
for ( nny=-1; nny<2; nny++)
|
||||
{
|
||||
if (3>rand()%200&&parts[i].life==0)
|
||||
if (!pmap[y+ry+nny][x+rx+nnx])
|
||||
{
|
||||
parts[i].type = PT_SHLD3;
|
||||
parts[i].life = 7;
|
||||
}
|
||||
else if (!pmap[y+ny+nny][x+nx+nnx])
|
||||
{
|
||||
create_part(-1,x+nx+nnx,y+ny+nny,PT_SHLD1);
|
||||
parts[pmap[y+ny+nny][x+nx+nnx]>>8].life=7;
|
||||
np = create_part(-1,x+rx+nnx,y+ry+nny,PT_SHLD1);
|
||||
if (np<0) continue;
|
||||
parts[np].life=7;
|
||||
}
|
||||
}
|
||||
else if (parts[r>>8].type==PT_SHLD4&&4>rand()%10)
|
||||
}
|
||||
else if ((r&0xFF)==PT_SHLD4&&4>rand()%10)
|
||||
{
|
||||
parts[i].type=PT_SHLD3;
|
||||
part_change_type(i,x,y,PT_SHLD3);
|
||||
parts[i].life = 7;
|
||||
}
|
||||
}
|
||||
@ -73,86 +76,91 @@ int update_SHLD2(UPDATE_FUNC_ARGS) {
|
||||
}
|
||||
|
||||
int update_SHLD3(UPDATE_FUNC_ARGS) {
|
||||
int r, nnx, nny;
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
int r, nnx, nny, rx, ry, np;
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART)
|
||||
continue;
|
||||
if (!r)
|
||||
{
|
||||
if (1>rand()%2500)
|
||||
{
|
||||
create_part(-1,x+nx,y+ny,PT_SHLD1);
|
||||
parts[pmap[y+ny][x+nx]>>8].life=7;
|
||||
parts[i].type = PT_SHLD2;
|
||||
np = create_part(-1,x+rx,y+ry,PT_SHLD1);
|
||||
if (np<0) continue;
|
||||
parts[np].life=7;
|
||||
part_change_type(i,x,y,PT_SHLD2);
|
||||
}
|
||||
else
|
||||
continue;
|
||||
|
||||
}
|
||||
if (parts[r>>8].type==PT_SHLD1 && parts[i].life>3)
|
||||
if ((r&0xFF)==PT_SHLD1 && parts[i].life>3)
|
||||
{
|
||||
parts[r>>8].type = PT_SHLD2;
|
||||
part_change_type(r>>8,x+rx,y+ry,PT_SHLD2);
|
||||
parts[r>>8].life=7;
|
||||
}
|
||||
else if (parts[r>>8].type==PT_SPRK&&parts[i].life==0)
|
||||
else if ((r&0xFF)==PT_SPRK&&parts[i].life==0)
|
||||
{
|
||||
if (18>rand()%3000&&parts[i].life==0)
|
||||
{
|
||||
part_change_type(i,x,y,PT_SHLD4);
|
||||
parts[i].life = 7;
|
||||
}
|
||||
for ( nnx=-1; nnx<2; nnx++)
|
||||
for ( nny=-1; nny<2; nny++)
|
||||
{
|
||||
if (2>rand()%3000&&parts[i].life==0)
|
||||
|
||||
if (!pmap[y+ry+nny][x+rx+nnx])
|
||||
{
|
||||
parts[i].type = PT_SHLD4;
|
||||
parts[i].life = 7;
|
||||
}
|
||||
else if (!pmap[y+ny+nny][x+nx+nnx])
|
||||
{
|
||||
create_part(-1,x+nx+nnx,y+ny+nny,PT_SHLD1);
|
||||
parts[pmap[y+ny+nny][x+nx+nnx]>>8].life=7;
|
||||
np = create_part(-1,x+rx+nnx,y+ry+nny,PT_SHLD1);
|
||||
if (np<0) continue;
|
||||
parts[np].life=7;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int update_SHLD4(UPDATE_FUNC_ARGS) {
|
||||
int r, nnx, nny;
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
int r, nnx, nny, rx, ry, np;
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART)
|
||||
continue;
|
||||
if (!r)
|
||||
{
|
||||
if (1>rand()%5500)
|
||||
{
|
||||
create_part(-1,x+nx,y+ny,PT_SHLD1);
|
||||
parts[pmap[y+ny][x+nx]>>8].life=7;
|
||||
parts[i].type = PT_SHLD2;
|
||||
np = create_part(-1,x+rx,y+ry,PT_SHLD1);
|
||||
if (np<0) continue;
|
||||
parts[np].life=7;
|
||||
part_change_type(i,x,y,PT_SHLD2);
|
||||
}
|
||||
else
|
||||
continue;
|
||||
|
||||
}
|
||||
if (parts[r>>8].type==PT_SHLD2 && parts[i].life>3)
|
||||
if ((r&0xFF)==PT_SHLD2 && parts[i].life>3)
|
||||
{
|
||||
parts[r>>8].type = PT_SHLD3;
|
||||
part_change_type(r>>8,x+rx,y+ry,PT_SHLD3);
|
||||
parts[r>>8].life = 7;
|
||||
}
|
||||
else if (parts[r>>8].type==PT_SPRK&&parts[i].life==0)
|
||||
else if ((r&0xFF)==PT_SPRK&&parts[i].life==0)
|
||||
for ( nnx=-1; nnx<2; nnx++)
|
||||
for ( nny=-1; nny<2; nny++)
|
||||
{
|
||||
if (!pmap[y+ny+nny][x+nx+nnx])
|
||||
if (!pmap[y+ry+nny][x+rx+nnx])
|
||||
{
|
||||
create_part(-1,x+nx+nnx,y+ny+nny,PT_SHLD1);
|
||||
parts[pmap[y+ny+nny][x+nx+nnx]>>8].life=7;
|
||||
np = create_part(-1,x+rx+nnx,y+ry+nny,PT_SHLD1);
|
||||
if (np<0) continue;
|
||||
parts[np].life=7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_SING(UPDATE_FUNC_ARGS) {
|
||||
int r;
|
||||
int r, rx, ry;
|
||||
int singularity = -parts[i].life;
|
||||
|
||||
if (pv[y/CELL][x/CELL]<singularity)
|
||||
@ -22,17 +22,16 @@ int update_SING(UPDATE_FUNC_ARGS) {
|
||||
if (y+CELL>0)
|
||||
pv[y/CELL-1][x/CELL-1] += 0.1f*(singularity-pv[y/CELL-1][x/CELL-1]);
|
||||
}
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 &&
|
||||
x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if (parts[r>>8].type!=PT_DMND&&33>=rand()/(RAND_MAX/100)+1)
|
||||
if ((r&0xFF)!=PT_DMND&&33>=rand()/(RAND_MAX/100)+1)
|
||||
{
|
||||
if (parts[r>>8].type==PT_SING && parts[r>>8].life >10)
|
||||
if ((r&0xFF)==PT_SING && parts[r>>8].life >10)
|
||||
{
|
||||
if (parts[i].life+parts[r>>8].life > 255)
|
||||
continue;
|
||||
@ -44,15 +43,16 @@ int update_SING(UPDATE_FUNC_ARGS) {
|
||||
{
|
||||
if (parts[r>>8].type!=PT_SING && 1>rand()%100)
|
||||
{
|
||||
parts[r>>8].type = PT_SING;
|
||||
parts[r>>8].life = rand()%50+60;
|
||||
int np;
|
||||
np = create_part(r>>8,x+rx,y+ry,PT_SING);
|
||||
parts[np].life = rand()%50+60;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
parts[i].life += 3;
|
||||
}
|
||||
parts[i].temp = restrict_flt(parts[r>>8].temp+parts[i].temp, MIN_TEMP, MAX_TEMP);
|
||||
parts[r>>8].type=PT_NONE;
|
||||
kill_part(r>>8);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
@ -1,75 +1,75 @@
|
||||
#include <powder.h>
|
||||
|
||||
int update_SPNG(UPDATE_FUNC_ARGS) {
|
||||
int r, trade;
|
||||
if (pv[y/CELL][x/CELL]<=3&&pv[y/CELL][x/CELL]>=-3)
|
||||
int r, trade, rx, ry, tmp;
|
||||
if (pv[y/CELL][x/CELL]<=3&&pv[y/CELL][x/CELL]>=-3&&parts[i].temp<=374.0f)
|
||||
{
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r || parts[i].temp>374.0f)
|
||||
continue;
|
||||
if (parts[r>>8].type==PT_WATR&&33>=rand()/(RAND_MAX/100)+1)
|
||||
if ((r&0xFF)==PT_WATR&&33>=rand()/(RAND_MAX/100)+1)
|
||||
{
|
||||
parts[i].life++;
|
||||
parts[r>>8].type=PT_NONE;
|
||||
kill_part(r>>8);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART)
|
||||
continue;
|
||||
if ((bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_WALLELEC||bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_EWALL||bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_DESTROYALL||bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_WALL||
|
||||
bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_ALLOWAIR||bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_ALLOWSOLID||bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_ALLOWGAS))
|
||||
if ((bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_WALLELEC||bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_EWALL||bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_DESTROYALL||bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_WALL||
|
||||
bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_ALLOWAIR||bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_ALLOWSOLID||bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_ALLOWGAS))
|
||||
continue;
|
||||
if ((!r)&&parts[i].life>=1)//if nothing then create water
|
||||
{
|
||||
create_part(-1,x+nx,y+ny,PT_WATR);
|
||||
create_part(-1,x+rx,y+ry,PT_WATR);
|
||||
parts[i].life--;
|
||||
}
|
||||
}
|
||||
for ( trade = 0; trade<9; trade ++)
|
||||
{
|
||||
nx = rand()%5-2;
|
||||
ny = rand()%5-2;
|
||||
if (x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
rx = rand()%5-2;
|
||||
ry = rand()%5-2;
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if (parts[r>>8].type==PT_SPNG&&(parts[i].life>parts[r>>8].life)&&parts[i].life>0)//diffusion
|
||||
if ((r&0xFF)==PT_SPNG&&(parts[i].life>parts[r>>8].life)&&parts[i].life>0)//diffusion
|
||||
{
|
||||
int temp = parts[i].life - parts[r>>8].life;
|
||||
if (temp ==1)
|
||||
tmp = parts[i].life - parts[r>>8].life;
|
||||
if (tmp ==1)
|
||||
{
|
||||
parts[r>>8].life ++;
|
||||
parts[i].life --;
|
||||
trade = 9;
|
||||
}
|
||||
else if (temp>0)
|
||||
else if (tmp>0)
|
||||
{
|
||||
parts[r>>8].life += temp/2;
|
||||
parts[i].life -= temp/2;
|
||||
parts[r>>8].life += tmp/2;
|
||||
parts[i].life -= tmp/2;
|
||||
trade = 9;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if (parts[r>>8].type==PT_FIRE&&parts[i].life>0)
|
||||
if ((r&0xFF)==PT_FIRE&&parts[i].life>0)
|
||||
{
|
||||
if (parts[i].life<=2)
|
||||
parts[i].life --;
|
||||
@ -77,18 +77,18 @@ int update_SPNG(UPDATE_FUNC_ARGS) {
|
||||
}
|
||||
}
|
||||
if (parts[i].temp>=374)
|
||||
for (nx=-1; nx<2; nx++)
|
||||
for (ny=-1; ny<2; ny++)
|
||||
if (x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
for (rx=-1; rx<2; rx++)
|
||||
for (ry=-1; ry<2; ry++)
|
||||
if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
r = pmap[y+ry][x+rx];
|
||||
if ((r>>8)>=NPART)
|
||||
continue;
|
||||
if ((bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_WALLELEC||bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_ALLOWLIQUID||bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_DESTROYALL||bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_WALL||bmap[(y+ny)/CELL][(x+nx)/CELL]==WL_ALLOWSOLID))
|
||||
if ((bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_WALLELEC||bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_ALLOWLIQUID||bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_DESTROYALL||bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_WALL||bmap[(y+ry)/CELL][(x+rx)/CELL]==WL_ALLOWSOLID))
|
||||
continue;
|
||||
if ((!r)&&parts[i].life>=1)//if nothing then create steam
|
||||
{
|
||||
create_part(-1,x+nx,y+ny,PT_WTRV);
|
||||
create_part(-1,x+rx,y+ry,PT_WTRV);
|
||||
parts[i].life--;
|
||||
parts[i].temp -= 40.0f;
|
||||
}
|
||||
|
@ -12,22 +12,10 @@ int update_WIFI(UPDATE_FUNC_ARGS) {
|
||||
continue;
|
||||
if (wireless[parts[i].tmp][0])
|
||||
{
|
||||
if ((r&0xFF)==PT_NSCN&&parts[r>>8].life==0 && wireless[parts[i].tmp][0])
|
||||
if (((r&0xFF)==PT_NSCN||(r&0xFF)==PT_PSCN||(r&0xFF)==PT_INWR)&&parts[r>>8].life==0 && wireless[parts[i].tmp][0])
|
||||
{
|
||||
parts[r>>8].ctype = r&0xFF;
|
||||
part_change_type(r>>8,x+rx,y+ry,PT_SPRK);
|
||||
parts[r>>8].ctype = PT_NSCN;
|
||||
parts[r>>8].life = 4;
|
||||
}
|
||||
else if ((r&0xFF)==PT_PSCN&&parts[r>>8].life==0 && wireless[parts[i].tmp][0])
|
||||
{
|
||||
part_change_type(r>>8,x+rx,y+ry,PT_SPRK);
|
||||
parts[r>>8].ctype = PT_PSCN;
|
||||
parts[r>>8].life = 4;
|
||||
}
|
||||
else if ((r&0xFF)==PT_INWR&&parts[r>>8].life==0 && wireless[parts[i].tmp][0])
|
||||
{
|
||||
part_change_type(r>>8,x+rx,y+ry,PT_SPRK);
|
||||
parts[r>>8].ctype = PT_INWR;
|
||||
parts[r>>8].life = 4;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user