summaryrefslogtreecommitdiff
path: root/src/elements
diff options
context:
space:
mode:
authorCatelite <liclockwork@yahoo.com>2012-06-13 11:34:21 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-06-13 12:51:24 (GMT)
commita104696620d7935984a6dab2a1514ff72e8a1872 (patch)
tree45dc6d93116b9928c0f2b27fd21faecb976fc14c /src/elements
parent6c3034acffc79f810d20cd04d14134c7ac2ada0e (diff)
downloadpowder-a104696620d7935984a6dab2a1514ff72e8a1872.zip
powder-a104696620d7935984a6dab2a1514ff72e8a1872.tar.gz
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
Diffstat (limited to 'src/elements')
-rw-r--r--src/elements/elec.c3
-rw-r--r--src/elements/exot.c95
-rw-r--r--src/elements/neut.c2
3 files changed, 63 insertions, 37 deletions
diff --git a/src/elements/elec.c b/src/elements/elec.c
index 12f9fac..2ea1dfc 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 6a325ea..6be47cb 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 e3593f5..3e59335 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||