diff options
Diffstat (limited to 'src/elements')
| -rw-r--r-- | src/elements/brel.c | 1 | ||||
| -rw-r--r-- | src/elements/elec.c | 2 | ||||
| -rw-r--r-- | src/elements/exot.c | 65 | ||||
| -rw-r--r-- | src/elements/warp.c | 18 |
4 files changed, 75 insertions, 11 deletions
diff --git a/src/elements/brel.c b/src/elements/brel.c index 06ea363..c97118b 100644 --- a/src/elements/brel.c +++ b/src/elements/brel.c @@ -20,6 +20,7 @@ int update_BREL(UPDATE_FUNC_ARGS) { if (1>rand()%200 && (pv[y/CELL][x/CELL] > 30.0f) && parts[i].temp>9000 && parts[i].life>0) { part_change_type(i, x ,y ,PT_EXOT); + parts[i].life = 1000; } if ((pv[y/CELL][x/CELL] > 10.0f) && (parts[i].life>0)) { parts[i].temp = parts[i].temp + (pv[y/CELL][x/CELL])/8; diff --git a/src/elements/elec.c b/src/elements/elec.c index 919ee87..12f9fac 100644 --- a/src/elements/elec.c +++ b/src/elements/elec.c @@ -94,6 +94,8 @@ int update_ELEC(UPDATE_FUNC_ARGS) { kill_part(i); return 1; } + if ((r&0xFF)==PT_EXOT) + parts[r>>8].tmp2 += 5; if (ptypes[r&0xFF].properties & PROP_CONDUCTS && ((r&0xFF)!=PT_NBLE||parts[i].temp<2273.15)) { create_part(-1, x+rx, y+ry, PT_SPRK); diff --git a/src/elements/exot.c b/src/elements/exot.c index 234ab9e..81f7c7d 100644 --- a/src/elements/exot.c +++ b/src/elements/exot.c @@ -16,20 +16,67 @@ #include <element.h> int update_EXOT(UPDATE_FUNC_ARGS) { - - + int r, rt, rx, ry, nb, rrx, rry; + for (rx=-2; rx<=2; rx++) + for (ry=-2; ry<=2; ry++) + if (x+rx>=0 && y+ry>=0 && x+rx<XRES && y+ry<YRES) { + r = pmap[y+ry][x+rx]; + if (!r) + continue; + if ((r&0xFF)==PT_WARP) + { + if (parts[r>>8].tmp2>2000) + if (1>rand()%100) + { + parts[i].tmp2 += 50; + } + } + } parts[i].tmp--; - if (parts[i].tmp<1) { + parts[i].tmp2--; + if (parts[i].tmp<1 || parts[i].tmp>250) parts[i].tmp = 250; + if (parts[i].tmp2<1) + parts[i].tmp2 = 1; + else if (parts[i].tmp2>2500) + { + parts[i].tmp2 = 2500; + part_change_type(i, x, y, PT_WARP); + parts[i].temp = 10000; } - + else + pv[y/CELL][x/CELL] += (parts[i].tmp2/2000) * CFDS; + if (pv[y/CELL][x/CELL]>200 && parts[i].temp>9000 && parts[i].tmp2>200) + { + part_change_type(i, x, y, PT_WARP); + parts[i].tmp2 = 2500; + } return 0; } int graphics_EXOT(GRAPHICS_FUNC_ARGS) { - *colr = cpart->tmp / 2 + 0x08; - *colg = cpart->tmp * 2 + 0x28; - *colb = cpart->tmp / 2 + 0x08; + int q = cpart->temp; + int b = cpart->tmp; + if ((cpart->tmp2 - 1)>rand()%1000) + { + float frequency = 0.90045; + *colr = (sin(frequency*q + 0) * 127 + 255); + *colg = (sin(frequency*q + 2) * 127 + 255); + *colb = (sin(frequency*q + 4) * 127 + 255); + *firea = 100; + *firer = 0; + *fireg = 0; + *fireb = 0; + *pixel_mode |= PMODE_FLAT; +// *pixel_mode |= FIRE_ADD; + *pixel_mode |= PMODE_FLARE; + } + else + { + float frequency = 0.00045; + *colr = (sin(frequency*q + 0) * 127 + (b/1.7)); + *colg = (sin(frequency*q + 2) * 127 + (b/1.7)); + *colb = (sin(frequency*q + 4) * 127 + (b/1.7)); *cola = cpart->tmp / 6; *firea = *cola; *firer = *colr; @@ -37,8 +84,6 @@ int graphics_EXOT(GRAPHICS_FUNC_ARGS) *fireb = *colb; *pixel_mode |= FIRE_ADD; *pixel_mode |= PMODE_BLUR; - - - + } return 0; } diff --git a/src/elements/warp.c b/src/elements/warp.c index 27352fd..0108bb9 100644 --- a/src/elements/warp.c +++ b/src/elements/warp.c @@ -17,6 +17,14 @@ int update_WARP(UPDATE_FUNC_ARGS) { int trade, r, rx, ry; + + if (parts[i].tmp2>2000) + { + parts[i].temp = 10000; + pv[y/CELL][x/CELL] += (parts[i].tmp2/2000) * CFDS; + if (2>rand()%1000) + create_part(-3, x, y, PT_ELEC); + } for ( trade = 0; trade<5; trade ++) { rx = rand()%3-1; @@ -26,12 +34,14 @@ int update_WARP(UPDATE_FUNC_ARGS) { r = pmap[y+ry][x+rx]; if (!r) continue; - if ((r&0xFF)!=PT_WARP&&(r&0xFF)!=PT_STKM&&(r&0xFF)!=PT_STKM2&&(r&0xFF)!=PT_DMND&&(r&0xFF)!=PT_CLNE&&(r&0xFF)!=PT_BCLN&&(r&0xFF)!=PT_PCLN&&(10>=rand()%200)) + if ((r&0xFF)!=PT_WARP&&(r&0xFF)!=PT_STKM&&(r&0xFF)!=PT_STKM2&&(r&0xFF)!=PT_DMND&&(r&0xFF)!=PT_CLNE&&(r&0xFF)!=PT_BCLN&&(r&0xFF)!=PT_PCLN) { parts[i].x = parts[r>>8].x; parts[i].y = parts[r>>8].y; parts[r>>8].x = x; parts[r>>8].y = y; + parts[r>>8].vx = (rand()%4)-1.5; + parts[r>>8].vy = (rand()%4)-2; parts[i].life += 4; pmap[y][x] = r; pmap[y+ry][x+rx] = (i<<8)|parts[i].type; @@ -41,3 +51,9 @@ int update_WARP(UPDATE_FUNC_ARGS) { } return 0; } +int graphics_WARP(GRAPHICS_FUNC_ARGS) +{ + *cola = 0; + *pixel_mode &= ~PMODE; + return 0; +} |
