From a104696620d7935984a6dab2a1514ff72e8a1872 Mon Sep 17 00:00:00 2001 From: Catelite Date: Wed, 13 Jun 2012 07:34:21 -0400 Subject: [PATCH] Update to EXOT that makes it permeable to neutrons as well as electrons. Neutrons cause a water>distilled water spread that enables EXOT's copy function, at its original speed. Electrons reset mode, but not tmp2. Trippy monochrome colors for copy mode. Conflicts: src/elements/exot.c --- src/elements/elec.c | 3 ++ src/elements/exot.c | 95 +++++++++++++++++++++++++++------------------ src/elements/neut.c | 2 + src/powder.c | 1 + 4 files changed, 64 insertions(+), 37 deletions(-) diff --git a/src/elements/elec.c b/src/elements/elec.c index 12f9fac7c..2ea1dfcb7 100644 --- a/src/elements/elec.c +++ b/src/elements/elec.c @@ -95,7 +95,10 @@ int update_ELEC(UPDATE_FUNC_ARGS) { return 1; } if ((r&0xFF)==PT_EXOT) + { parts[r>>8].tmp2 += 5; + parts[r>>8].life = 1000; + } 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 6a325ea1d..6be47cb14 100644 --- a/src/elements/exot.c +++ b/src/elements/exot.c @@ -32,13 +32,14 @@ int update_EXOT(UPDATE_FUNC_ARGS) { parts[i].tmp2 += 100; } } - if (parts[i].tmp>245) - if (1>rand()%500) - if ((r&0xFF)!=PT_EXOT && (r&0xFF)!=PT_BREL && (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) - { - 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_BREL && (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) + { + create_part(i, x, y, parts[r>>8].type); + return 0; + } } parts[i].tmp--; parts[i].tmp2--; @@ -48,17 +49,19 @@ int update_EXOT(UPDATE_FUNC_ARGS) { parts[i].tmp2 = 1; else if (parts[i].tmp2>6000) { - parts[i].tmp2 = 6000; - part_change_type(i, x, y, PT_WARP); - parts[i].temp = 10000; - return 0; + parts[i].tmp2 = 10000; + if (parts[i].life<1001) + { + part_change_type(i, x, y, PT_WARP); + return 0; + } } - else + else if (parts[i].life<1001) pv[y/CELL][x/CELL] += (parts[i].tmp2*CFDS)/160000; 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 = 6000; + part_change_type(i, x, y, PT_WARP); return 0; } if (parts[i].tmp2>100) @@ -106,33 +109,51 @@ int graphics_EXOT(GRAPHICS_FUNC_ARGS) int q = cpart->temp; int b = cpart->tmp; int c = cpart->tmp2; - 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 |= FIRE_ADD; - *pixel_mode |= PMODE_FLARE; + if (cpart->life < 1001) + { + 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)); - *cola = cpart->tmp / 6; - *firea = *cola; - *firer = *colr; - *fireg = *colg; - *fireb = *colb; - *pixel_mode |= FIRE_ADD; - *pixel_mode |= PMODE_BLUR; + 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; + *fireg = *colg; + *fireb = *colb; + *pixel_mode |= FIRE_ADD; + *pixel_mode |= PMODE_BLUR; + + } return 0; } diff --git a/src/elements/neut.c b/src/elements/neut.c index e3593f57a..3e59335a6 100644 --- a/src/elements/neut.c +++ b/src/elements/neut.c @@ -147,6 +147,8 @@ int update_NEUT(UPDATE_FUNC_ARGS) { kill_part(i); return 1; } + else if ((r&0xFF)==PT_EXOT && 5>(rand()%100)) + parts[r>>8].life = 1500; /*if(parts[r>>8].type>1 && parts[r>>8].type!=PT_NEUT && parts[r>>8].type-1!=PT_NEUT && parts[r>>8].type-1!=PT_STKM && (ptypes[parts[r>>8].type-1].menusection==SC_LIQUID|| ptypes[parts[r>>8].type-1].menusection==SC_EXPLOSIVE|| diff --git a/src/powder.c b/src/powder.c index de06b1678..ddf34a7eb 100644 --- a/src/powder.c +++ b/src/powder.c @@ -166,6 +166,7 @@ void init_can_move() } can_move[PT_ELEC][PT_LCRY] = 2; can_move[PT_ELEC][PT_EXOT] = 2; + can_move[PT_NEUT][PT_EXOT] = 2; can_move[PT_PHOT][PT_LCRY] = 3;//varies according to LCRY life can_move[PT_PHOT][PT_BIZR] = 2;