diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2011-08-25 21:18:42 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2011-08-25 21:18:42 (GMT) |
| commit | 4421a92b59ce572e1eea9fe76295807e9cdd75f8 (patch) | |
| tree | 76f298fbbf44fd62f939065c4b79e87f289b68da /src/elements | |
| parent | e06d68d63a78eb9f3358d61800df4e97193e3699 (diff) | |
| download | powder-4421a92b59ce572e1eea9fe76295807e9cdd75f8.zip powder-4421a92b59ce572e1eea9fe76295807e9cdd75f8.tar.gz | |
Life diffusion for Acid
Diffstat (limited to 'src/elements')
| -rw-r--r-- | src/elements/acid.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/elements/acid.c b/src/elements/acid.c index 1759dec..24bb321 100644 --- a/src/elements/acid.c +++ b/src/elements/acid.c @@ -1,7 +1,7 @@ #include <element.h> int update_ACID(UPDATE_FUNC_ARGS) { - int r,rx,ry; + int r, rx, ry, trade, 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)) @@ -38,5 +38,30 @@ int update_ACID(UPDATE_FUNC_ARGS) { } } } + for ( trade = 0; trade<2; trade ++) + { + 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+ry][x+rx]; + if ((r>>8)>=NPART || !r) + continue; + if ((r&0xFF)==PT_ACID&&(parts[i].life>parts[r>>8].life)&&parts[i].life>0)//diffusion + { + int temp = parts[i].life - parts[r>>8].life; + if (temp ==1) + { + parts[r>>8].life ++; + parts[i].life --; + } + else if (temp>0) + { + parts[r>>8].life += temp/2; + parts[i].life -= temp/2; + } + } + } + } return 0; } |
