diff options
Diffstat (limited to 'src/simulation/elements/EXOT.cpp')
| -rw-r--r-- | src/simulation/elements/EXOT.cpp | 81 |
1 files changed, 52 insertions, 29 deletions
diff --git a/src/simulation/elements/EXOT.cpp b/src/simulation/elements/EXOT.cpp index 64691fc..3db5bc9 100644 --- a/src/simulation/elements/EXOT.cpp +++ b/src/simulation/elements/EXOT.cpp @@ -64,13 +64,14 @@ int Element_EXOT::update(UPDATE_FUNC_ARGS) { parts[i].tmp2 += 100; } } - if (parts[i].tmp>245) - if (1>rand()%500) - if ((r&0xFF)!=PT_EXOT && (r&0xFF)!=PT_BREC && (r&0xFF)!=PT_DMND && (r&0xFF)!=PT_CLNE && (r&0xFF)!=PT_PRTI && (r&0xFF)!=PT_PRTO && (r&0xFF)!=PT_PCLN && (r&0xFF)!=PT_PHOT && (r&0xFF)!=PT_VOID && (r&0xFF)!=PT_NBHL && (r&0xFF)!=PT_WARP) - { - sim->create_part(i, x, y, parts[r>>8].type); - return 0; - } + if ((r&0xFF)==PT_EXOT && parts[r>>8].life==1500 && 1>rand()%1000) + parts[i].life = 1500; + if ((parts[i].tmp>245) && (parts[i].life>1000)) + if ((r&0xFF)!=PT_EXOT && (r&0xFF)!=PT_BREC && (r&0xFF)!=PT_DMND && (r&0xFF)!=PT_CLNE && (r&0xFF)!=PT_PRTI && (r&0xFF)!=PT_PRTO && (r&0xFF)!=PT_PCLN && (r&0xFF)!=PT_PHOT && (r&0xFF)!=PT_VOID && (r&0xFF)!=PT_NBHL && (r&0xFF)!=PT_WARP && (r&0xFF)!=PT_NEUT) + { + sim->create_part(i, x, y, parts[r>>8].type); + return 0; + } } parts[i].tmp--; parts[i].tmp2--; @@ -80,17 +81,19 @@ int Element_EXOT::update(UPDATE_FUNC_ARGS) { parts[i].tmp2 = 1; else if (parts[i].tmp2>6000) { - parts[i].tmp2 = 6000; - sim->part_change_type(i, x, y, PT_WARP); - parts[i].temp = 10000; - return 0; + parts[i].tmp2 = 10000; + if (parts[i].life<1001) + { + sim->part_change_type(i, x, y, PT_WARP); + return 0; + } } - else + else if(parts[i].life<1001) sim->pv[y/CELL][x/CELL] += (parts[i].tmp2*CFDS)/160000; if (sim->pv[y/CELL][x/CELL]>200 && parts[i].temp>9000 && parts[i].tmp2>200) { - sim->part_change_type(i, x, y, PT_WARP); parts[i].tmp2 = 6000; + sim->part_change_type(i, x, y, PT_WARP); return 0; } if (parts[i].tmp2>100) @@ -140,26 +143,46 @@ int Element_EXOT::graphics(GRAPHICS_FUNC_ARGS) int q = cpart->temp; int b = cpart->tmp; int c = cpart->tmp2; - if ((cpart->tmp2 - 1)>rand()%1000) + if (cpart->life < 1001) { - float frequency = 0.04045; - *colr = (sin(frequency*c + 4) * 127 + 150); - *colg = (sin(frequency*c + 6) * 127 + 150); - *colb = (sin(frequency*c + 8) * 127 + 150); - *firea = 100; - *firer = 0; - *fireg = 0; - *fireb = 0; - *pixel_mode |= PMODE_FLAT; - // *pixel_mode |= FIRE_ADD; - *pixel_mode |= PMODE_FLARE; + if ((cpart->tmp2 - 1)>rand()%1000) + { + float frequency = 0.04045; + *colr = (sin(frequency*c + 4) * 127 + 150); + *colg = (sin(frequency*c + 6) * 127 + 150); + *colb = (sin(frequency*c + 8) * 127 + 150); + + *firea = 100; + *firer = 0; + *fireg = 0; + *fireb = 0; + + *pixel_mode |= PMODE_FLAT; + *pixel_mode |= PMODE_FLARE; + } + else + { + float frequency = 0.00045; + *colr = (sin(frequency*q + 4) * 127 + (b/1.7)); + *colg = (sin(frequency*q + 6) * 127 + (b/1.7)); + *colb = (sin(frequency*q + 8) * 127 + (b/1.7)); + *cola = cpart->tmp / 6; + + *firea = *cola; + *firer = *colr; + *fireg = *colg; + *fireb = *colb; + + *pixel_mode |= FIRE_ADD; + *pixel_mode |= PMODE_BLUR; + } } else { - float frequency = 0.00045; - *colr = (sin(frequency*q + 4) * 127 + (b/1.7)); - *colg = (sin(frequency*q + 6) * 127 + (b/1.7)); - *colb = (sin(frequency*q + 8) * 127 + (b/1.7)); + float frequency = 0.01300; + *colr = (sin(frequency*q + 6.00) * 127 + ((b/2.9) + 80)); + *colg = (sin(frequency*q + 6.00) * 127 + ((b/2.9) + 80)); + *colb = (sin(frequency*q + 6.00) * 127 + ((b/2.9) + 80)); *cola = cpart->tmp / 6; *firea = *cola; *firer = *colr; |
