summaryrefslogtreecommitdiff
path: root/src/simulation/elements/FIRE.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/simulation/elements/FIRE.cpp')
-rw-r--r--src/simulation/elements/FIRE.cpp36
1 files changed, 14 insertions, 22 deletions
diff --git a/src/simulation/elements/FIRE.cpp b/src/simulation/elements/FIRE.cpp
index f9313fa..9a9334f 100644
--- a/src/simulation/elements/FIRE.cpp
+++ b/src/simulation/elements/FIRE.cpp
@@ -50,32 +50,28 @@ Element_FIRE::Element_FIRE()
int Element_FIRE::update(UPDATE_FUNC_ARGS)
{
int r, rx, ry, rt, t = parts[i].type;
- if (t==PT_PLSM&&parts[i].ctype == PT_NBLE&&parts[i].life <=1)
+ if (t==PT_PLSM && parts[i].ctype == PT_NBLE && parts[i].life <=1)
{
- t = PT_NBLE;
- sim->part_change_type(i,x,y,t);
+ sim->part_change_type(i,x,y,PT_NBLE);
parts[i].life = 0;
}
- if(t==PT_FIRE && parts[i].life <=1)
+ if (t==PT_FIRE && parts[i].life <=1)
{
if ((parts[i].tmp&0x3) == 3){
- t = PT_DSTW;
- sim->part_change_type(i,x,y,t);
+ sim->part_change_type(i,x,y,PT_DSTW);
parts[i].life = 0;
parts[i].ctype = PT_FIRE;
}
else if (parts[i].temp<625)
{
- t = PT_SMKE;
- sim->part_change_type(i,x,y,t);
+ sim->part_change_type(i,x,y,PT_SMKE);
parts[i].life = rand()%20+250;
}
}
- if(t==PT_PLSM && parts[i].life <=1)
+ if (t==PT_PLSM && parts[i].life <=1)
{
if ((parts[i].tmp&0x3) == 3){
- t = PT_DSTW;
- sim->part_change_type(i,x,y,t);
+ sim->part_change_type(i,x,y,PT_DSTW);
parts[i].life = 0;
parts[i].ctype = PT_FIRE;
}
@@ -89,7 +85,7 @@ int Element_FIRE::update(UPDATE_FUNC_ARGS)
continue;
if (sim->bmap[(y+ry)/CELL][(x+rx)/CELL] && sim->bmap[(y+ry)/CELL][(x+rx)/CELL]!=WL_STREAM)
continue;
- rt = parts[r>>8].type;
+ rt = r&0xFF;
if ((surround_space || sim->elements[rt].Explosive) &&
(t!=PT_SPRK || (rt!=PT_RBDM && rt!=PT_LRBD && rt!=PT_INSL)) &&
(t!=PT_PHOT || rt!=PT_INSL) &&
@@ -123,12 +119,11 @@ int Element_FIRE::updateLegacy(UPDATE_FUNC_ARGS) {
rt = r&0xFF;
lpv = (int)sim->pv[(y+ry)/CELL][(x+rx)/CELL];
if (lpv < 1) lpv = 1;
- if (t!=PT_SPRK && sim->elements[rt].Meltable && ((rt!=PT_RBDM && rt!=PT_LRBD) || t!=PT_SPRK) && ((t!=PT_FIRE&&t!=PT_PLSM) || (rt!=PT_METL && rt!=PT_IRON && rt!=PT_ETRD && rt!=PT_PSCN && rt!=PT_NSCN && rt!=PT_NTCT && rt!=PT_PTCT && rt!=PT_BMTL && rt!=PT_BRMT && rt!=PT_SALT && rt!=PT_INWR)) &&
- sim->elements[rt].Meltable*lpv>(rand()%1000))
+ if (t!=PT_SPRK && sim->elements[rt].Meltable && ((rt!=PT_RBDM && rt!=PT_LRBD) || t!=PT_SPRK) && ((t!=PT_FIRE&&t!=PT_PLSM) || (rt!=PT_METL && rt!=PT_IRON && rt!=PT_ETRD && rt!=PT_PSCN && rt!=PT_NSCN && rt!=PT_NTCT && rt!=PT_PTCT && rt!=PT_BMTL && rt!=PT_BRMT && rt!=PT_SALT && rt!=PT_INWR)) &&sim->elements[rt].Meltable*lpv>(rand()%1000))
{
if (t!=PT_LAVA || parts[i].life>0)
{
- parts[r>>8].ctype = (rt==PT_BRMT)?PT_BMTL:parts[r>>8].type;
+ parts[r>>8].ctype = (rt==PT_BRMT)?PT_BMTL:(r&0xFF);
parts[r>>8].ctype = (parts[r>>8].ctype==PT_SAND)?PT_GLAS:parts[r>>8].ctype;
sim->part_change_type(r>>8,x+rx,y+ry,PT_LAVA);
parts[r>>8].life = rand()%120+240;
@@ -136,9 +131,8 @@ int Element_FIRE::updateLegacy(UPDATE_FUNC_ARGS) {
else
{
parts[i].life = 0;
- t = parts[i].type = (parts[i].ctype)?parts[i].ctype:PT_STNE;
parts[i].ctype = PT_NONE;//rt;
- sim->part_change_type(i,x,y,t);
+ sim->part_change_type(i,x,y,(parts[i].ctype)?parts[i].ctype:PT_STNE);
return 1;
}
}
@@ -153,8 +147,7 @@ int Element_FIRE::updateLegacy(UPDATE_FUNC_ARGS) {
if (t==PT_LAVA)
{
parts[i].life = 0;
- t = parts[i].type = PT_STNE;
- sim->part_change_type(i,x,y,t);
+ sim->part_change_type(i,x,y,PT_STNE);
}
}
if (t!=PT_SPRK && (rt==PT_WATR || rt==PT_DSTW || rt==PT_SLTW))
@@ -168,9 +161,8 @@ int Element_FIRE::updateLegacy(UPDATE_FUNC_ARGS) {
if (t==PT_LAVA)
{
parts[i].life = 0;
- t = parts[i].type = (parts[i].ctype)?parts[i].ctype:PT_STNE;
parts[i].ctype = PT_NONE;
- sim->part_change_type(i,x,y,t);
+ sim->part_change_type(i,x,y,(parts[i].ctype)?parts[i].ctype:PT_STNE);
}
}
}
@@ -198,4 +190,4 @@ int Element_FIRE::graphics(GRAPHICS_FUNC_ARGS)
return 0;
}
-Element_FIRE::~Element_FIRE() {} \ No newline at end of file
+Element_FIRE::~Element_FIRE() {}