#include <element.h>
int update_CEXP(UPDATE_FUNC_ARGS)
{
int r,rx,ry;
if (parts[i].ctype==PT_FIRE){
pv[y/CELL][x/CELL]+=parts[i].life;
parts[i].temp=parts[i].tmp;
parts[i].life=75;
parts[i].type=PT_FIRE;
if (parts[i].tmp2&32){
parts[i].type=PT_PLSM;
}
if (parts[i].tmp2&64){
parts[i].ctype=PT_BMTL;
parts[i].type=PT_LAVA;
}
if (parts[i].tmp2&128){
parts[i].type=PT_NONE;
}
} else {
if (parts[i].tmp2&1){
for (ry=-1;ry<2;ry++){
for (rx=-1;rx<2;rx++){
r=pmap[y+ry][x+rx];
if (((r&0xff)==PT_FIRE)||((r&0xff)==PT_PLSM)){
parts[i].ctype=PT_FIRE;
}
}
}
}
if (parts[i].tmp2&2){
for (ry=-1;ry<2;ry++){
for (rx=-1;rx<2;rx++){
r=pmap[y+ry][x+rx];
if ((r&0xff)==PT_LAVA){
parts[i].ctype=PT_FIRE;
}
}
}
}
if (parts[i].tmp2&4){
for (ry=-1;ry<2;ry++){
for (rx=-1;rx<2;rx++){
r=pmap[y+ry][x+rx];
if ((r&0xff)==PT_SPRK){
parts[i].ctype=PT_FIRE;
}
}
}
}
if (((parts[i].tmp2&8)&&(pv[y/CELL][x/CELL]>=3.0f))||((parts[i].tmp2&16)&&(parts[i].temp>=500.0f))){
parts[i].ctype=PT_FIRE;
}
}
return 0;
}