Ton of changes to make EXOT work as expected. Added graphics to WARP to make it actually invisible besides BLOB mode, EXOT now makes rainbows and explodes with too many electrons o__o
This commit is contained in:
parent
fe39fdb0e5
commit
c07afe4c89
@ -352,6 +352,7 @@ int graphics_GEL(GRAPHICS_FUNC_ARGS);
|
||||
int graphics_TRON(GRAPHICS_FUNC_ARGS);
|
||||
int graphics_SOAP(GRAPHICS_FUNC_ARGS);
|
||||
int graphics_EXOT(GRAPHICS_FUNC_ARGS);
|
||||
int graphics_WARP(GRAPHICS_FUNC_ARGS);
|
||||
int graphics_stickmen(GRAPHICS_FUNC_ARGS);
|
||||
|
||||
void TRON_init_graphics();
|
||||
|
@ -127,7 +127,7 @@ part_type ptypes[PT_NUM] =
|
||||
{"BCLN", PIXPACK(0xFFD040), 0.0f, 0.00f * CFDS, 0.97f, 0.50f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 12, 1, 1, 100, SC_SPECIAL, R_TEMP+0.0f +273.15f, 251, "Breakable Clone.", ST_NONE, TYPE_SOLID|PROP_LIFE_DEC|PROP_LIFE_KILL_DEC, &update_BCLN, NULL},
|
||||
{"LOVE", PIXPACK(0xFF30FF), 0.0f, 0.00f * CFDS, 0.00f, 0.00f, 0.0f, 0.0f, 0.0f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 1, 100, SC_CRACKER2, 373.0f, 40, "Love...", ST_GAS, TYPE_SOLID, &update_MISC, NULL},
|
||||
{"DEUT", PIXPACK(0x00153F), 0.6f, 0.01f * CFDS, 0.98f, 0.95f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 2, 0, 0, 0, 20, 1, 1, 31, SC_NUCLEAR, R_TEMP-2.0f +273.15f, 251, "Deuterium oxide. Volume changes with temp, radioactive with neutrons.", ST_LIQUID, TYPE_LIQUID|PROP_NEUTPENETRATE, &update_DEUT, &graphics_DEUT},
|
||||
{"WARP", PIXPACK(0x000000), 0.8f, 0.00f * CFDS, 0.9f, 0.70f, -0.1f, 0.0f, 3.00f, 0.000f * CFDS, 0, 0, 0, 0, 30, 1, 1, 1, SC_NUCLEAR, R_TEMP +273.15f, 100, "Displaces other elements.", ST_GAS, TYPE_GAS|PROP_LIFE_DEC|PROP_LIFE_KILL, &update_WARP, NULL},
|
||||
{"WARP", PIXPACK(0x000000), 0.8f, 0.00f * CFDS, 0.9f, 0.70f, -0.1f, 0.0f, 3.00f, 0.000f * CFDS, 0, 0, 0, 0, 30, 1, 1, 1, SC_NUCLEAR, R_TEMP +273.15f, 100, "Displaces other elements.", ST_GAS, TYPE_GAS|PROP_LIFE_DEC|PROP_LIFE_KILL, &update_WARP, &graphics_WARP},
|
||||
{"PUMP", PIXPACK(0x0A0A3B), 0.0f, 0.00f * CFDS, 0.95f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 10, 1, 1, 100, SC_POWERED, 273.15f, 0, "Changes pressure to its temp when activated. (use HEAT/COOL).", ST_SOLID, TYPE_SOLID, &update_PUMP, &graphics_PUMP},
|
||||
{"FWRK", PIXPACK(0x666666), 0.4f, 0.01f * CFDS, 0.99f, 0.95f, 0.0f, 0.4f, 0.00f, 0.000f * CFDS, 1, 0, 0, 0, 1, 1, 1, 97, SC_EXPLOSIVE, R_TEMP+0.0f +273.15f, 100, "First fireworks made, activated by heat/neutrons.", ST_SOLID, TYPE_PART|PROP_LIFE_DEC, &update_FWRK, NULL},
|
||||
{"PIPE", PIXPACK(0x444444), 0.0f, 0.00f * CFDS, 0.95f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 1, 100, SC_SOLIDS, 273.15f, 0, "Moves elements around, read FAQ on website for help.", ST_SOLID, TYPE_SOLID|PROP_LIFE_DEC, &update_PIPE, &graphics_PIPE},
|
||||
@ -176,7 +176,7 @@ part_type ptypes[PT_NUM] =
|
||||
{"GEL", PIXPACK(0xFF9900), 0.6f, 0.01f * CFDS, 0.98f, 0.95f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 2, 0, 0, 0, 20, 1, 1, 35, SC_LIQUID, R_TEMP-2.0f +273.15f, 29, "Gel. A liquid with variable viscosity and heat conductivity", ST_LIQUID, TYPE_LIQUID|PROP_LIFE_DEC|PROP_NEUTPENETRATE, &update_GEL, &graphics_GEL},
|
||||
{"TRON", PIXPACK(0x000000), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 1, 100, SC_SPECIAL, 0.0f, 40, "Smart particles, Travels in straight lines and avoids obstacles. Grows with time.", ST_NONE, TYPE_SOLID|PROP_LIFE_DEC|PROP_LIFE_KILL, &update_TRON, &graphics_TRON},
|
||||
{"TTAN", PIXPACK(0x909090), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 50, 1, 1, 100, SC_SOLIDS, R_TEMP+0.0f +273.15f, 251, "Titanium, Higher melting temperature than other metals, blocks all air pressure", ST_SOLID, TYPE_SOLID|PROP_CONDUCTS|PROP_HOT_GLOW|PROP_LIFE_DEC, &update_TTAN, NULL},
|
||||
{"EXOT", PIXPACK(0x808080), 0.3f, 0.02f * CFDS, 0.95f, 0.80f, 0.0f, 0.15f, 0.00f, 0.0003f * CFDS, 2, 0, 0, 0, 2, 1, 1, 45, SC_NUCLEAR, R_TEMP-2.0f +273.15f, 29, "Radioactive liquid", ST_LIQUID, TYPE_LIQUID|PROP_NEUTPENETRATE, &update_EXOT, &graphics_EXOT},
|
||||
{"EXOT", PIXPACK(0x404040), 0.3f, 0.02f * CFDS, 0.95f, 0.80f, 0.0f, 0.15f, 0.00f, 0.0003f * CFDS, 2, 0, 0, 0, 2, 1, 1, 46, SC_NUCLEAR, R_TEMP-2.0f +273.15f, 250, "Exotic matter. Explodes with excess exposure to electrons.", ST_LIQUID, TYPE_LIQUID, &update_EXOT, &graphics_EXOT},
|
||||
/*FREE*/{"BRAN", PIXPACK(0xCCCC00), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 0, 0, 100, SC_LIFE, 9000.0f, 40, "Brian 6 S6/B246/3", ST_NONE, TYPE_SOLID|PROP_LIFE, NULL, NULL},
|
||||
/*FREE*/{"WIND", PIXPACK(0x101010), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 0, 0, 100, SC_SPECIAL, 0.0f, 40, "", ST_NONE, ST_NONE, NULL, NULL},
|
||||
{"HYGN", PIXPACK(0x5070FF), 2.0f, 0.00f * CFDS, 0.99f, 0.30f, -0.10f, 0.00f, 3.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 1, 1, SC_GAS, R_TEMP+0.0f +273.15f, 251, "Combines with O2 to make WATR", ST_GAS, TYPE_GAS, &update_H2, NULL},
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -163,6 +163,7 @@ void init_can_move()
|
||||
can_move[PT_PHOT][t] = 2;
|
||||
}
|
||||
can_move[PT_ELEC][PT_LCRY] = 2;
|
||||
can_move[PT_ELEC][PT_EXOT] = 2;
|
||||
can_move[PT_PHOT][PT_LCRY] = 3;//varies according to LCRY life
|
||||
|
||||
can_move[PT_PHOT][PT_BIZR] = 2;
|
||||
@ -1023,7 +1024,7 @@ inline int create_part(int p, int x, int y, int tv)//the function for creating a
|
||||
parts[i].vx = 2;
|
||||
break;
|
||||
case PT_EXOT:
|
||||
parts[i].life = 250;
|
||||
parts[i].life = 1000;
|
||||
break;
|
||||
case PT_STKM:
|
||||
if (player.spwn==0)
|
||||
|
Reference in New Issue
Block a user