summaryrefslogtreecommitdiff
path: root/src/elements
diff options
context:
space:
mode:
authorSimon 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)
commit4421a92b59ce572e1eea9fe76295807e9cdd75f8 (patch)
tree76f298fbbf44fd62f939065c4b79e87f289b68da /src/elements
parente06d68d63a78eb9f3358d61800df4e97193e3699 (diff)
downloadpowder-4421a92b59ce572e1eea9fe76295807e9cdd75f8.zip
powder-4421a92b59ce572e1eea9fe76295807e9cdd75f8.tar.gz
Life diffusion for Acid
Diffstat (limited to 'src/elements')
-rw-r--r--src/elements/acid.c27
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;
}