added gbmb which is an element that makes large amounts of gravity when it hits a particle
This commit is contained in:
parent
e7ce51d420
commit
e55e52c460
@ -197,7 +197,8 @@
|
||||
#define PT_GPMP 154
|
||||
#define PT_CLST 155
|
||||
#define PT_WIRE 156
|
||||
#define PT_NUM 157
|
||||
#define PT_GBMB 157
|
||||
#define PT_NUM 158
|
||||
|
||||
#define R_TEMP 22
|
||||
#define MAX_TEMP 9999
|
||||
@ -313,6 +314,7 @@ int update_GPMP(UPDATE_FUNC_ARGS);
|
||||
int update_CLST(UPDATE_FUNC_ARGS);
|
||||
int update_DLAY(UPDATE_FUNC_ARGS);
|
||||
int update_WIRE(UPDATE_FUNC_ARGS);
|
||||
int update_GBMB(UPDATE_FUNC_ARGS);
|
||||
|
||||
int update_MISC(UPDATE_FUNC_ARGS);
|
||||
int update_legacy_PYRO(UPDATE_FUNC_ARGS);
|
||||
@ -546,7 +548,8 @@ static const part_type ptypes[PT_NUM] =
|
||||
{"PBCN", PIXPACK(0x3B1D0A), 0.0f, 0.00f * CFDS, 0.97f, 0.50f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 12, 1, 1, 100, SC_POWERED, R_TEMP+0.0f +273.15f, 251, "Powered breakable clone", ST_NONE, TYPE_SOLID, &update_PBCN},
|
||||
{"GPMP", PIXPACK(0x0A3B3B), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 1, 100, SC_POWERED, 0.0f +273.15f, 0, "Changes gravity to its temp when activated. (use HEAT/COOL).", ST_NONE, TYPE_SOLID, &update_GPMP},
|
||||
{"CLST", PIXPACK(0xE4A4A4), 0.7f, 0.02f * CFDS, 0.94f, 0.95f, 0.0f, 0.2f, 0.00f, 0.000f * CFDS, 1, 0, 0, 2, 2, 1, 1, 55, SC_POWDERS, R_TEMP+0.0f +273.15f, 70, "Clay dust. Produces paste when mixed with water.", ST_SOLID, TYPE_PART, &update_CLST},
|
||||
{"WIRE", PIXPACK(0xFFCC00), 0.0f, 0.00f * CFDS, 0.00f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 250, "WireWorld wires.",ST_SOLID,TYPE_SOLID,&update_WIRE}
|
||||
{"WIRE", PIXPACK(0xFFCC00), 0.0f, 0.00f * CFDS, 0.00f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 250, "WireWorld wires.",ST_SOLID,TYPE_SOLID,&update_WIRE},
|
||||
{"GBMB", PIXPACK(0x1144BB), 0.6f, 0.01f * CFDS, 0.98f, 0.95f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 1, 0, 0, 0, 20, 1, 1, 30, SC_EXPLOSIVE, R_TEMP-2.0f +273.15f, 29, "Sticks to first object it touches then produces strong gravity push.", ST_NONE, TYPE_PART|PROP_LIFE_DEC|PROP_LIFE_KILL_DEC, &update_GBMB},
|
||||
//Name Colour Advec Airdrag Airloss Loss Collid Grav Diffus Hotair Fal Burn Exp Mel Hrd M Use Weight Section H Ins Description
|
||||
};
|
||||
|
||||
@ -719,6 +722,7 @@ static part_transition ptransitions[PT_NUM] =
|
||||
/* GPMP */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
|
||||
/* CLST */ {IPL, NT, IPH, NT, ITL, NT, 1256.0f, PT_LAVA},
|
||||
/* WIRE */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT, PT_WIRE},
|
||||
/* GBMB */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
|
||||
};
|
||||
#undef IPL
|
||||
#undef IPH
|
||||
|
20
src/elements/gbmb.c
Normal file
20
src/elements/gbmb.c
Normal file
@ -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;
|
||||
}
|
@ -3246,6 +3246,21 @@ void draw_parts(pixel *vid)
|
||||
blendpixel(vid, nx, ny, 255, 255, 255, 255);
|
||||
}
|
||||
|
||||
}
|
||||
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))
|
||||
{
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user