summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBryan Hoyle <starfoxprime@gmail.com>2011-08-16 18:39:50 (GMT)
committer Bryan Hoyle <starfoxprime@gmail.com>2011-08-16 18:39:50 (GMT)
commite55e52c4604cafcfadde2ac7a1d893631f321871 (patch)
treecb851246e8b10959b33f86356140d8807080af38 /src
parente7ce51d420d30ee6ab82df8e7dbbe791401f33e9 (diff)
downloadpowder-e55e52c4604cafcfadde2ac7a1d893631f321871.zip
powder-e55e52c4604cafcfadde2ac7a1d893631f321871.tar.gz
added gbmb which is an element that makes large amounts of gravity when it hits a particle
Diffstat (limited to 'src')
-rw-r--r--src/elements/gbmb.c20
-rw-r--r--src/graphics.c15
-rw-r--r--src/powder.c3
3 files changed, 37 insertions, 1 deletions
diff --git a/src/elements/gbmb.c b/src/elements/gbmb.c
new file mode 100644
index 0000000..20582af
--- /dev/null
+++ b/src/elements/gbmb.c
@@ -0,0 +1,20 @@
+#include <element.h>
+int update_GBMB(UPDATE_FUNC_ARGS) {
+ int rx,ry,r;
+ for (rx=-2; rx<3; rx++)
+ for (ry=-2; ry<3; ry++){
+ r = pmap[y+ry][x+rx];
+ if(r)
+ if((r&0xFF)!=PT_BOMB&&
+ (r&0xFF)!=PT_GBMB&&
+ (r&0xFF)!=PT_CLNE&&
+ (r&0xFF)!=PT_PCLN&&
+ !parts[i].tmp){
+ parts[i].life=100;
+ parts[i].tmp = 1;
+ }
+ }
+ if(parts[i].life>1)
+ gravmap[y/CELL][x/CELL] = -20;
+return 0;
+}
diff --git a/src/graphics.c b/src/graphics.c
index 14367ae..481d891 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -3247,6 +3247,21 @@ void draw_parts(pixel *vid)
}
}
+ else if (t==PT_GBMB)
+ {
+ x = nx/CELL;
+ y = ny/CELL;
+ if (parts[i].tmp==1) {
+ fire_r[y][x] = (int)((float)parts[i].life/100.0 * 25);
+ fire_g[y][x] = (int)((float)parts[i].life/100.0 * 50);
+ fire_b[y][x] = (int)((float)parts[i].life/100.0 * 255);
+ }
+
+ else {
+ blendpixel(vid, nx, ny, 255, 255, 255, 255);
+ }
+
+ }
else if (ptypes[t].properties&PROP_HOT_GLOW && parts[i].temp>(ptransitions[t].thv-800.0f))
{
float frequency = 3.1415/(2*ptransitions[t].thv-(ptransitions[t].thv-800.0f));
diff --git a/src/powder.c b/src/powder.c
index 595132b..37690f9 100644
--- a/src/powder.c
+++ b/src/powder.c
@@ -364,7 +364,8 @@ int try_move(int i, int x, int y, int nx, int ny)
parts[e].y += y-ny;
pmap[(int)(parts[e].y+0.5f)][(int)(parts[e].x+0.5f)] = (e<<8)|parts[e].type;
}
-
+ if(parts[i].type==PT_GBMB&&parts[i].tmp==1)
+ return 0;
return 1;
}