summaryrefslogtreecommitdiff
path: root/src/elements
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2011-09-23 11:48:24 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-09-23 11:48:24 (GMT)
commit24b4478136ff0919cff0c62ace2deb173b879472 (patch)
tree55095c76527bf106c8f84e48bf8135f9b45932f8 /src/elements
parent8b9a0b663fb7684ae7a2f054f4ec53c0cb293a66 (diff)
downloadpowder-24b4478136ff0919cff0c62ace2deb173b879472.zip
powder-24b4478136ff0919cff0c62ace2deb173b879472.tar.gz
Added Caustic gas, similar to acid, created with acid and water vapour
Diffstat (limited to 'src/elements')
-rw-r--r--src/elements/acid.c11
-rw-r--r--src/elements/caus.c35
2 files changed, 45 insertions, 1 deletions
diff --git a/src/elements/acid.c b/src/elements/acid.c
index d6e31be..f6a816a 100644
--- a/src/elements/acid.c
+++ b/src/elements/acid.c
@@ -9,7 +9,7 @@ int update_ACID(UPDATE_FUNC_ARGS) {
r = pmap[y+ry][x+rx];
if (!r)
continue;
- if ((r&0xFF)!=PT_ACID)
+ if ((r&0xFF)!=PT_ACID && (r&0xFF)!=PT_CAUS)
{
if ((r&0xFF)==PT_PLEX || (r&0xFF)==PT_NITR || (r&0xFF)==PT_GUNP || (r&0xFF)==PT_RBDM || (r&0xFF)==PT_LRBD)
{
@@ -18,6 +18,15 @@ int update_ACID(UPDATE_FUNC_ARGS) {
parts[i].life = 4;
parts[r>>8].life = 4;
}
+ else if ((r&0xFF)==PT_WTRV)
+ {
+ if(!(rand()%250))
+ {
+ part_change_type(i, x, y, PT_CAUS);
+ parts[i].life = (rand()%50)+25;
+ kill_part(r>>8);
+ }
+ }
else if (((r&0xFF)!=PT_CLNE && (r&0xFF)!=PT_PCLN && ptypes[r&0xFF].hardness>(rand()%1000))&&parts[i].life>=50)
{
if (parts_avg(i, r>>8,PT_GLAS)!= PT_GLAS)//GLAS protects stuff from acid
diff --git a/src/elements/caus.c b/src/elements/caus.c
new file mode 100644
index 0000000..cb7fab5
--- /dev/null
+++ b/src/elements/caus.c
@@ -0,0 +1,35 @@
+#include <element.h>
+
+int update_CAUS(UPDATE_FUNC_ARGS) {
+ 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))
+ {
+ r = pmap[y+ry][x+rx];
+ if (!r)
+ continue;
+ if ((r&0xFF)!=PT_ACID && (r&0xFF)!=PT_CAUS)
+ {
+ if (((r&0xFF)!=PT_CLNE && (r&0xFF)!=PT_PCLN && ptypes[r&0xFF].hardness>(rand()%1000))&&parts[i].life>=50)
+ {
+ if (parts_avg(i, r>>8,PT_GLAS)!= PT_GLAS)//GLAS protects stuff from acid
+ {
+ float newtemp = ((60.0f-(float)ptypes[r&0xFF].hardness))*7.0f;
+ if(newtemp < 0){
+ newtemp = 0;
+ }
+ parts[i].temp += newtemp;
+ parts[i].life--;
+ kill_part(r>>8);
+ }
+ }
+ else if (parts[i].life<=50)
+ {
+ kill_part(i);
+ return 1;
+ }
+ }
+ }
+ return 0;
+}