summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon <simon@hardwired.org.uk>2011-04-10 10:38:29 (GMT)
committer Simon <simon@hardwired.org.uk>2011-04-10 10:38:29 (GMT)
commit422fcc68ec91e8d2239e5267c5a583256920fc67 (patch)
tree9ae37003f0b2736fb04d332a7f6f10ab18ad81d8 /src
parent00d8af2404a6ec0747ce4c90c6cb949d7665bff4 (diff)
downloadpowder-422fcc68ec91e8d2239e5267c5a583256920fc67.zip
powder-422fcc68ec91e8d2239e5267c5a583256920fc67.tar.gz
Better Oxygen/Hydrogen burning
Diffstat (limited to 'src')
-rw-r--r--src/elements/O2.c34
-rw-r--r--src/elements/h2.c8
-rw-r--r--src/elements/pyro.c16
3 files changed, 24 insertions, 34 deletions
diff --git a/src/elements/O2.c b/src/elements/O2.c
index 2d7aff0..be5da42 100644
--- a/src/elements/O2.c
+++ b/src/elements/O2.c
@@ -13,39 +13,13 @@ int update_O2(UPDATE_FUNC_ARGS)
if ((r&0xFF)==PT_FIRE)
{
- parts[r>>8].life+=(rand()/(RAND_MAX/100))*2;
parts[r>>8].temp+=(rand()/(RAND_MAX/100));
- parts[i].tmp++;
+ parts[r>>8].tmp |= 2;
+ create_part(i,x,y,PT_FIRE);
+ parts[i].temp+=(rand()/(RAND_MAX/100));
+ parts[i].tmp |= 2;
}
}
-
- if (pv[y/CELL][x/CELL] > 8.0f)
- {
- 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+ry][x+rx];
- if ((r>>8)>=NPART || !r)
- continue;
- if ((r&0xFF)==PT_H2)
- {
- part_change_type(r>>8,x+rx,y+ry,PT_WATR);
- if (50<(rand()/(RAND_MAX/100))) {
- part_change_type(i,x,y,PT_WATR);
- rx = ry = 3;
- }
- }
- }
- }
-
-
- if (parts[i].tmp>=50)
- {
- create_part(i,x,y,PT_FIRE);
- parts[i].life+=(rand()/(RAND_MAX/100))+50;
- parts[i].temp+=(rand()/(RAND_MAX/100));
- }
return 0;
}
diff --git a/src/elements/h2.c b/src/elements/h2.c
index e3fee78..e96e96b 100644
--- a/src/elements/h2.c
+++ b/src/elements/h2.c
@@ -16,6 +16,14 @@ int update_H2(UPDATE_FUNC_ARGS)
part_change_type(r>>8,x+rx,y+ry,PT_WATR);
part_change_type(i,x,y,PT_OIL);
}
+ if ((r&0xFF)==PT_FIRE)
+ {
+ parts[r>>8].temp+=(rand()/(RAND_MAX/100));
+ parts[r>>8].tmp |= 1;
+ create_part(i,x,y,PT_FIRE);
+ parts[i].temp+=(rand()/(RAND_MAX/100));
+ parts[i].tmp |= 1;
+ }
}
return 0;
}
diff --git a/src/elements/pyro.c b/src/elements/pyro.c
index 0fe1def..19192d1 100644
--- a/src/elements/pyro.c
+++ b/src/elements/pyro.c
@@ -8,11 +8,19 @@ int update_PYRO(UPDATE_FUNC_ARGS) {
part_change_type(i,x,y,t);
parts[i].life = 0;
}
- if (t==PT_FIRE && parts[i].life <=1 && parts[i].temp<625)
+ if(t==PT_FIRE && parts[i].life <=1)
{
- t = PT_SMKE;
- part_change_type(i,x,y,t);
- parts[i].life = rand()%20+250;
+ if (parts[i].tmp==3){
+ t = PT_WATR;
+ part_change_type(i,x,y,t);
+ parts[i].life = 0;
+ }
+ else if (parts[i].temp<625)
+ {
+ t = PT_SMKE;
+ part_change_type(i,x,y,t);
+ parts[i].life = rand()%20+250;
+ }
}
for (rx=-2; rx<3; rx++)
for (ry=-2; ry<3; ry++)