You know, stuff.
This commit is contained in:
parent
267e6a4511
commit
db364c549f
@ -176,7 +176,8 @@
|
||||
#define PT_ARAY 126
|
||||
#define PT_BRAY 127
|
||||
#define PT_STKM2 128
|
||||
#define PT_NUM 129
|
||||
#define PT_BOMB 129
|
||||
#define PT_NUM 130
|
||||
|
||||
#define R_TEMP 22
|
||||
#define MAX_TEMP 9999
|
||||
@ -398,6 +399,7 @@ static const part_type ptypes[PT_NUM] =
|
||||
{"ARAY", PIXPACK(0xFFBB00), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Ray Emmitter. Rays create points when they collide", TYPE_SOLID, NULL},
|
||||
{"BRAY", PIXPACK(0xFFFFFF), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 0, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Ray Point. Rays create points when they collide", TYPE_SOLID, NULL},
|
||||
{"STK2", PIXPACK(0x000000), 0.5f, 0.00f * CFDS, 0.2f, 1.0f, 0.0f, 0.0f, 0.0f, 0.00f * CFDS, 0, 0, 0, 0, 0, 1, 50, SC_SPECIAL, R_TEMP+14.6f+273.15f, 0, "Stickman. Don't kill him!", 0, NULL},
|
||||
{"BOMB", PIXPACK(0xFFF288), 0.6f, 0.01f * CFDS, 0.98f, 0.95f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 1, 0, 0, 0, 20, 1, 30, SC_EXPLOSIVE, R_TEMP-2.0f +273.15f, 29, "Bomb.", TYPE_PART, NULL},
|
||||
//Name Colour Advec Airdrag Airloss Loss Collid Grav Diffus Hotair Fal Burn Exp Mel Hrd M Weights Section H Ins Description
|
||||
};
|
||||
|
||||
|
@ -2425,6 +2425,55 @@ void draw_parts(pixel *vid)
|
||||
blendpixel(vid, nx-1, ny-1, cr, cg, cb, 32);
|
||||
}
|
||||
}
|
||||
else if(t==PT_BOMB){
|
||||
if(parts[i].tmp==0){
|
||||
cr = PIXR(ptypes[t].pcolors);
|
||||
cg = PIXG(ptypes[t].pcolors);
|
||||
cb = PIXB(ptypes[t].pcolors);
|
||||
if(cmode != CM_NOTHING && cmode != CM_CRACK){
|
||||
int newx = 0;
|
||||
float gradv = 100;
|
||||
blendpixel(vid, nx+1, ny, cr, cg, cb, 223);
|
||||
blendpixel(vid, nx-1, ny, cr, cg, cb, 223);
|
||||
blendpixel(vid, nx, ny+1, cr, cg, cb, 223);
|
||||
blendpixel(vid, nx, ny-1, cr, cg, cb, 223);
|
||||
|
||||
blendpixel(vid, nx+1, ny-1, cr, cg, cb, 112);
|
||||
blendpixel(vid, nx-1, ny-1, cr, cg, cb, 112);
|
||||
blendpixel(vid, nx+1, ny+1, cr, cg, cb, 112);
|
||||
blendpixel(vid, nx-1, ny+1, cr, cg, cb, 112);
|
||||
for(newx = 0; gradv>0.5; newx++){
|
||||
addpixel(vid, nx+newx, ny, cr, cg, cb, gradv);
|
||||
addpixel(vid, nx-newx, ny, cr, cg, cb, gradv);
|
||||
|
||||
addpixel(vid, nx, ny+newx, cr, cg, cb, gradv);
|
||||
addpixel(vid, nx, ny-newx, cr, cg, cb, gradv);
|
||||
gradv = gradv/1.1f;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(parts[i].tmp==1){
|
||||
cr = PIXR(ptypes[t].pcolors);
|
||||
cg = PIXG(ptypes[t].pcolors);
|
||||
cb = PIXB(ptypes[t].pcolors);
|
||||
if(cmode != CM_NOTHING && cmode != CM_CRACK){
|
||||
int newx = 0;
|
||||
float gradv = 4*parts[i].life;
|
||||
for(newx = 0; gradv>0.5; newx++){
|
||||
addpixel(vid, nx+newx, ny, cr, cg, cb, gradv);
|
||||
addpixel(vid, nx-newx, ny, cr, cg, cb, gradv);
|
||||
|
||||
addpixel(vid, nx, ny+newx, cr, cg, cb, gradv);
|
||||
addpixel(vid, nx, ny-newx, cr, cg, cb, gradv);
|
||||
gradv = gradv/1.5f;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
blendpixel(vid, nx, ny, 255, 255, 255, 255);
|
||||
}
|
||||
|
||||
}
|
||||
else if(t==PT_FIRE && parts[i].life)
|
||||
{
|
||||
float ttemp = (float)((int)(parts[i].life/2));
|
||||
|
58
src/powder.c
58
src/powder.c
@ -2788,6 +2788,64 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(t==PT_BOMB)
|
||||
{
|
||||
if(parts[i].tmp==1){
|
||||
for(nx=-2; nx<3; nx++)
|
||||
for(ny=-2; ny<3; ny++)
|
||||
if(x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny))
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
if((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if(parts[r>>8].type!=PT_NONE && parts[r>>8].type!=PT_BOMB){
|
||||
parts[i].type = PT_NONE;
|
||||
goto killed;
|
||||
}
|
||||
}
|
||||
} else if(parts[i].tmp==0){
|
||||
for(nx=-2; nx<3; nx++)
|
||||
for(ny=-2; ny<3; ny++)
|
||||
if(x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES)
|
||||
{
|
||||
r = pmap[y+ny][x+nx];
|
||||
if((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if(parts[r>>8].type!=PT_NONE && parts[r>>8].type!=PT_BOMB){
|
||||
int rad = 8;
|
||||
int nxi;
|
||||
int nxj;
|
||||
pmap[y][x] = 0;
|
||||
for(nxj=-(rad+1); nxj<=(rad+1); nxj++)
|
||||
for(nxi=-(rad+1); nxi<=(rad+1); nxi++)
|
||||
if((pow(nxi,2))/(pow((rad+1),2))+(pow(nxj,2))/(pow((rad+1),2))<=1){
|
||||
int nb = create_part(-1, x+nxi, y+nxj, PT_BOMB);
|
||||
if(nb!=-1){
|
||||
parts[nb].tmp = 1;
|
||||
parts[nb].life = 50;
|
||||
parts[nb].temp = MAX_TEMP;
|
||||
}
|
||||
}
|
||||
for(nxj=-rad; nxj<=rad; nxj++)
|
||||
for(nxi=-rad; nxi<=rad; nxi++)
|
||||
if((pow(nxi,2))/(pow(rad,2))+(pow(nxj,2))/(pow(rad,2))<=1){
|
||||
delete_part(x+nxi, y+nxj);
|
||||
pv[(y+nxj)/CELL][(x+nxi)/CELL] += 1.0f;
|
||||
int nb = create_part(-1, x+nxi, y+nxj, PT_BOMB);
|
||||
if(nb!=-1){
|
||||
parts[nb].tmp = 2;
|
||||
parts[nb].life = 1;
|
||||
parts[nb].temp = MAX_TEMP;
|
||||
}
|
||||
}
|
||||
//create_parts(x, y, 9, 9, PT_BOMB);
|
||||
//create_parts(x, y, 8, 8, PT_NONE);
|
||||
parts[i].type = PT_NONE;
|
||||
goto killed;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(t==PT_FWRK)
|
||||
{
|
||||
if((parts[i].temp>400&&(9+parts[i].temp/40)>rand()%100000&&parts[i].life==0&&!pmap[y-1][x])||parts[i].ctype==PT_DUST)
|
||||
|
Loading…
Reference in New Issue
Block a user