More SPRK life checks for electronic elements
Check life>0, because SPRK changes back to its ctype when life==0. This could result in SPRK being found/not found depending on particle order, so pretend SPRK is not there if life==0 (it will disappear during the current frame).
This commit is contained in:
parent
1a5cd45eb8
commit
68ab3ca3ca
@ -11,7 +11,7 @@ int update_ARAY(UPDATE_FUNC_ARGS) {
|
|||||||
r = pmap[y+ry][x+rx];
|
r = pmap[y+ry][x+rx];
|
||||||
if (!r)
|
if (!r)
|
||||||
continue;
|
continue;
|
||||||
if ((r&0xFF)==PT_SPRK && parts[r>>8].life<4) {
|
if ((r&0xFF)==PT_SPRK && parts[r>>8].life>0 && parts[r>>8].life<4) {
|
||||||
int destroy = (parts[r>>8].ctype==PT_PSCN)?1:0;
|
int destroy = (parts[r>>8].ctype==PT_PSCN)?1:0;
|
||||||
int nostop = (parts[r>>8].ctype==PT_INST)?1:0;
|
int nostop = (parts[r>>8].ctype==PT_INST)?1:0;
|
||||||
for (docontinue = 1, nxx = 0, nyy = 0, nxi = rx*-1, nyi = ry*-1; docontinue; nyy+=nyi, nxx+=nxi) {
|
for (docontinue = 1, nxx = 0, nyy = 0, nxi = rx*-1, nyi = ry*-1; docontinue; nyy+=nyi, nxx+=nxi) {
|
||||||
|
@ -19,7 +19,7 @@ int update_DLAY(UPDATE_FUNC_ARGS) {
|
|||||||
r = pmap[y+ry][x+rx];
|
r = pmap[y+ry][x+rx];
|
||||||
if (!r)
|
if (!r)
|
||||||
continue;
|
continue;
|
||||||
if ((r&0xFF)==PT_SPRK && parts[i].life==0 && parts[r>>8].life<4 && parts[r>>8].ctype==PT_PSCN)
|
if ((r&0xFF)==PT_SPRK && parts[i].life==0 && parts[r>>8].life>0 && parts[r>>8].life<4 && parts[r>>8].ctype==PT_PSCN)
|
||||||
{
|
{
|
||||||
parts[i].life = (int)(parts[i].temp-273.15);
|
parts[i].life = (int)(parts[i].temp-273.15);
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ int update_EMP(UPDATE_FUNC_ARGS) {
|
|||||||
r = pmap[y+ry][x+rx];
|
r = pmap[y+ry][x+rx];
|
||||||
if (!r)
|
if (!r)
|
||||||
continue;
|
continue;
|
||||||
if ((r&0xFF)==PT_SPRK && parts[r>>8].life<4)
|
if ((r&0xFF)==PT_SPRK && parts[r>>8].life>0 && parts[r>>8].life<4)
|
||||||
{
|
{
|
||||||
ok=1;
|
ok=1;
|
||||||
break;
|
break;
|
||||||
|
@ -11,7 +11,7 @@ int update_PCLN(UPDATE_FUNC_ARGS) {
|
|||||||
r = pmap[y+ry][x+rx];
|
r = pmap[y+ry][x+rx];
|
||||||
if (!r)
|
if (!r)
|
||||||
continue;
|
continue;
|
||||||
if ((r&0xFF)==PT_SPRK && parts[r>>8].life<4)
|
if ((r&0xFF)==PT_SPRK && parts[r>>8].life>0 && parts[r>>8].life<4)
|
||||||
{
|
{
|
||||||
if (parts[r>>8].ctype==PT_PSCN)
|
if (parts[r>>8].ctype==PT_PSCN)
|
||||||
parts[i].life = 10;
|
parts[i].life = 10;
|
||||||
|
@ -11,7 +11,7 @@ int update_PVOD(UPDATE_FUNC_ARGS) {
|
|||||||
r = pmap[y+ry][x+rx];
|
r = pmap[y+ry][x+rx];
|
||||||
if (!r)
|
if (!r)
|
||||||
continue;
|
continue;
|
||||||
if ((r&0xFF)==PT_SPRK && parts[r>>8].life<4)
|
if ((r&0xFF)==PT_SPRK && parts[r>>8].life>0 && parts[r>>8].life<4)
|
||||||
{
|
{
|
||||||
if (parts[r>>8].ctype==PT_PSCN)
|
if (parts[r>>8].ctype==PT_PSCN)
|
||||||
parts[i].life = 10;
|
parts[i].life = 10;
|
||||||
|
@ -20,7 +20,7 @@ int update_STOR(UPDATE_FUNC_ARGS) {
|
|||||||
parts[i].pavg[1] = parts[r>>8].ctype;
|
parts[i].pavg[1] = parts[r>>8].ctype;
|
||||||
kill_part(r>>8);
|
kill_part(r>>8);
|
||||||
}
|
}
|
||||||
if(parts[i].tmp && (r&0xFF)==PT_SPRK && parts[r>>8].ctype==PT_PSCN && parts[r>>8].life<4)
|
if(parts[i].tmp && (r&0xFF)==PT_SPRK && parts[r>>8].ctype==PT_PSCN && parts[r>>8].life>0 && parts[r>>8].life<4)
|
||||||
{
|
{
|
||||||
for(ry1 = 1; ry1 >= -1; ry1--){
|
for(ry1 = 1; ry1 >= -1; ry1--){
|
||||||
for(rx1 = 0; rx1 >= -1 && rx1 <= 1; rx1 = -rx1-rx1+1){ // Oscilate the X starting at 0, 1, -1, 3, -5, etc (Though stop at -1)
|
for(rx1 = 0; rx1 >= -1 && rx1 <= 1; rx1 = -rx1-rx1+1){ // Oscilate the X starting at 0, 1, -1, 3, -5, etc (Though stop at -1)
|
||||||
|
@ -29,10 +29,9 @@ int update_WIRE(UPDATE_FUNC_ARGS) {
|
|||||||
r = pmap[y+ry][x+rx];
|
r = pmap[y+ry][x+rx];
|
||||||
if (!r)
|
if (!r)
|
||||||
continue;
|
continue;
|
||||||
if((r&0xFF)==PT_SPRK && parts[r>>8].life<4 && parts[r>>8].ctype==PT_PSCN)
|
if((r&0xFF)==PT_SPRK && parts[r>>8].life==3 && parts[r>>8].ctype==PT_PSCN)
|
||||||
{
|
{
|
||||||
parts[i].ctype=1;
|
parts[i].ctype=1;
|
||||||
parts[r>>8].life=0;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if((r&0xFF)==PT_NSCN && parts[i].tmp==1){create_part(-1, x+rx, y+ry, PT_SPRK);}
|
else if((r&0xFF)==PT_NSCN && parts[i].tmp==1){create_part(-1, x+rx, y+ry, PT_SPRK);}
|
||||||
|
Reference in New Issue
Block a user