update with simon, and some other changes from jacksonmj.
This commit is contained in:
parent
a6fe456cd0
commit
6b06d37ca5
@ -8,9 +8,9 @@
|
||||
#endif
|
||||
|
||||
#define SAVE_VERSION 45
|
||||
#define MINOR_VERSION 0
|
||||
#define MINOR_VERSION 1
|
||||
#define IDENT_VERSION "G" //Change this if you're not Simon! It should be a single letter.
|
||||
#define BETA
|
||||
//#define BETA
|
||||
|
||||
#define SERVER "powdertoy.co.uk"
|
||||
|
||||
@ -102,6 +102,8 @@ int GRAV_B2;
|
||||
|
||||
extern int legacy_enable;
|
||||
|
||||
extern int kiosk_enable;
|
||||
|
||||
extern int sys_pause;
|
||||
extern int framerender;
|
||||
|
||||
|
@ -320,24 +320,24 @@ static const part_type ptypes[PT_NUM] =
|
||||
{"URAN", PIXPACK(0x707020), 0.4f, 0.01f * CFDS, 0.99f, 0.95f, 0.0f, 0.4f, 0.00f, 0.000f * CFDS, 1, 0, 0, 0, 0, 1, 90, SC_NUCLEAR, R_TEMP+30.0f+273.15f, 251, "Heavy particles. Generates heat under pressure.", TYPE_PART | PROP_RADIOACTIVE, NULL},
|
||||
{"WAX", PIXPACK(0xF0F0BB), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 10, 1, 100, SC_SOLIDS, R_TEMP+0.0f +273.15f, 44, "Wax. Melts at moderately high temperatures.", TYPE_SOLID, NULL},
|
||||
{"MWAX", PIXPACK(0xE0E0AA), 0.3f, 0.02f * CFDS, 0.95f, 0.80f, 0.0f, 0.15f, 0.00f, 0.000001f* CFDS,2, 5, 0, 0, 2, 1, 25, SC_LIQUID, R_TEMP+28.0f+273.15f, 44, "Liquid Wax.", TYPE_LIQUID, NULL},
|
||||
{"PSCN", PIXPACK(0x805050), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "P-Type Silicon, Will transfer current to any conductor.", TYPE_SOLID, NULL},
|
||||
{"NSCN", PIXPACK(0x505080), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "N-Type Silicon, Will only transfer current to P-Type Silicon.", TYPE_SOLID, NULL},
|
||||
{"PSCN", PIXPACK(0x805050), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "P-Type Silicon, Will transfer current to any conductor.", TYPE_SOLID | PROP_CONDUCTS, NULL},
|
||||
{"NSCN", PIXPACK(0x505080), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "N-Type Silicon, Will only transfer current to P-Type Silicon.", TYPE_SOLID | PROP_CONDUCTS, NULL},
|
||||
{"LN2", PIXPACK(0x80A0DF), 0.6f, 0.01f * CFDS, 0.98f, 0.95f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 2, 0, 0, 0, 0, 1, 30, SC_LIQUID, 70.15f, 70, "Liquid Nitrogen. Very cold.", TYPE_LIQUID, NULL},
|
||||
{"INSL", PIXPACK(0x9EA3B6), 0.0f, 0.00f * CFDS, 0.95f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 7, 0, 0, 10, 1, 100, SC_SPECIAL, R_TEMP+0.0f +273.15f, 0, "Insulator, does not conduct heat or electricity.", TYPE_SOLID, NULL},
|
||||
{"BHOL", PIXPACK(0x202020), 0.0f, 0.00f * CFDS, 0.95f, 0.00f, 0.0f, 0.0f, 0.00f, -0.01f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_SPECIAL, R_TEMP+70.0f+273.15f, 255, "Black hole, sucks in other particles and heats up.", TYPE_SOLID, NULL},
|
||||
{"WHOL", PIXPACK(0xEFEFEF), 0.0f, 0.00f * CFDS, 0.95f, 0.00f, 0.0f, 0.0f, 0.00f, 0.010f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_SPECIAL, R_TEMP-16.0f+273.15f, 255, "White hole, pushes other particles away.", TYPE_SOLID, NULL},
|
||||
{"RBDM", PIXPACK(0xCCCCCC), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 1000, 1, 50, 1, 1, 100, SC_EXPLOSIVE, R_TEMP+0.0f +273.15f, 240, "Rubidium, explosive, especially on contact with water, low melting point", TYPE_SOLID|PROP_CONDUCTS, NULL},
|
||||
{"LRBD", PIXPACK(0xAAAAAA), 0.3f, 0.02f * CFDS, 0.95f, 0.80f, 0.0f, 0.15f, 0.00f, 0.000001f* CFDS,2, 1000, 1, 0, 2, 1, 45, SC_EXPLOSIVE, R_TEMP+45.0f+273.15f, 170, "Liquid Rubidium.", TYPE_LIQUID|PROP_CONDUCTS, NULL},
|
||||
{"NTCT", PIXPACK(0x505040), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Semi-conductor. Only conducts electricity when hot (More than 100C)", TYPE_SOLID, NULL},
|
||||
{"NTCT", PIXPACK(0x505040), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Semi-conductor. Only conducts electricity when hot (More than 100C)", TYPE_SOLID | PROP_CONDUCTS, NULL},
|
||||
{"SAND", PIXPACK(0xFFD090), 0.4f, 0.04f * CFDS, 0.94f, 0.95f, -0.1f, 0.3f, 0.00f, 0.000f * CFDS, 1, 0, 0, 5, 1, 1, 90, SC_POWDERS, R_TEMP+0.0f +273.15f, 150, "Sand, Heavy particles. Meltable.", TYPE_PART, NULL},
|
||||
{"GLAS", PIXPACK(0x404040), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_SOLIDS, R_TEMP+0.0f +273.15f, 150, "Solid. Meltable. Shatters under pressure", TYPE_SOLID | PROP_NEUTPASS | PROP_HOT_GLOW, NULL},
|
||||
{"PTCT", PIXPACK(0x405050), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Semi-conductor. Only conducts electricity when cold (Less than 120C)", TYPE_SOLID, NULL},
|
||||
{"PTCT", PIXPACK(0x405050), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Semi-conductor. Only conducts electricity when cold (Less than 120C)", TYPE_SOLID | PROP_CONDUCTS, NULL},
|
||||
{"BGLA", PIXPACK(0x606060), 0.4f, 0.04f * CFDS, 0.94f, 0.95f, -0.1f, 0.3f, 0.00f, 0.000f * CFDS, 1, 0, 0, 5, 2, 1, 90, SC_POWDERS, R_TEMP+0.0f +273.15f, 150, "Broken Glass, Heavy particles. Meltable. Bagels.", TYPE_PART | PROP_HOT_GLOW, NULL},
|
||||
{"THDR", PIXPACK(0xFFFFA0), 0.0f, 0.00f * CFDS, 1.0f, 0.30f, -0.99f, 0.6f, 0.62f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 1, SC_ELEC, 9000.0f +273.15f, 251, "Lightning! Very hot, inflicts damage upon most materials, transfers current to metals.", TYPE_ENERGY, NULL},
|
||||
{"PLSM", PIXPACK(0xBB99FF), 0.9f, 0.04f * CFDS, 0.97f, 0.20f, 0.0f, -0.1f, 0.30f, 0.001f * CFDS, 0, 0, 0, 0, 0, 1, 1, SC_GAS, 9000.0f +273.15f, 115, "Plasma, extremely hot.", TYPE_GAS, NULL},
|
||||
{"ETRD", PIXPACK(0x404040), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Electrode. Creates a surface that allows Plasma arcs. (Use sparingly)", TYPE_SOLID, NULL},
|
||||
{"ETRD", PIXPACK(0x404040), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Electrode. Creates a surface that allows Plasma arcs. (Use sparingly)", TYPE_SOLID | PROP_CONDUCTS, NULL},
|
||||
{"NICE", PIXPACK(0xC0E0FF), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, -0.0005f* CFDS, 0, 0, 0, 0, 20, 1, 100, SC_SOLIDS, 35.0f, 46, "Nitrogen Ice.", TYPE_SOLID, NULL},
|
||||
{"NBLE", PIXPACK(0xEB4917), 1.0f, 0.01f * CFDS, 0.99f, 0.30f, -0.1f, 0.0f, 0.75f, 0.001f * CFDS, 0, 0, 0, 0, 1, 1, 1, SC_GAS, R_TEMP+2.0f +273.15f, 106, "Noble Gas. Diffuses. Conductive. Ionizes into plasma when intruduced to electricity", TYPE_GAS, NULL},
|
||||
{"NBLE", PIXPACK(0xEB4917), 1.0f, 0.01f * CFDS, 0.99f, 0.30f, -0.1f, 0.0f, 0.75f, 0.001f * CFDS, 0, 0, 0, 0, 1, 1, 1, SC_GAS, R_TEMP+2.0f +273.15f, 106, "Noble Gas. Diffuses. Conductive. Ionizes into plasma when intruduced to electricity", TYPE_GAS | PROP_CONDUCTS, NULL},
|
||||
{"BTRY", PIXPACK(0x858505), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Solid. Generates Electricity.", TYPE_SOLID, NULL},
|
||||
{"LCRY", PIXPACK(0x505050), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Liquid Crystal. Changes colour when charged. (PSCN Charges, NSCN Discharges)", TYPE_SOLID, NULL},
|
||||
{"STKM", PIXPACK(0x000000), 0.5f, 0.00f * CFDS, 0.2f, 1.0f, 0.0f, 0.0f, 0.0f, 0.00f * CFDS, 0, 0, 0, 0, 0, 1, 50, SC_SPECIAL, R_TEMP+14.6f+273.15f, 0, "Stickman. Don't kill him!", 0, NULL},
|
||||
@ -347,7 +347,7 @@ static const part_type ptypes[PT_NUM] =
|
||||
{"COAL", PIXPACK(0x222222), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.0f, 0.0f * CFDS, 0, 0, 0, 0, 20, 1, 100, SC_SOLIDS, R_TEMP+0.0f +273.15f, 200, "Solid. Burns slowly.", TYPE_SOLID, NULL},
|
||||
{"LO2", PIXPACK(0x80A0EF), 0.6f, 0.01f * CFDS, 0.98f, 0.95f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 2, 5000, 0, 0, 0, 1, 30, SC_LIQUID, 80.0f, 70, "Liquid Oxygen. Very cold. Reacts with fire", TYPE_LIQUID, NULL},
|
||||
{"O2", PIXPACK(0x80A0FF), 2.0f, 0.00f * CFDS, 0.99f, 0.30f, -0.1f, 0.0f, 3.0f, 0.000f * CFDS, 0, 1000, 0, 0, 0, 1, 1, SC_GAS, R_TEMP+0.0f +273.15f, 70, "Gas. Ignites easily.", TYPE_GAS, NULL},
|
||||
{"INWR", PIXPACK(0x544141), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Insulated Wire. Doesn't conduct to metal or semiconductors.", TYPE_SOLID, NULL},
|
||||
{"INWR", PIXPACK(0x544141), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Insulated Wire. Doesn't conduct to metal or semiconductors.", TYPE_SOLID | PROP_CONDUCTS, NULL},
|
||||
{"YEST", PIXPACK(0xEEE0C0), 0.7f, 0.02f * CFDS, 0.96f, 0.80f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 1, 15, 0, 0, 30, 1, 80, SC_POWDERS, R_TEMP+0.0f +273.15f, 70, "Yeast, grows when warm (~37C).", TYPE_PART, NULL},
|
||||
{"DYST", PIXPACK(0xBBB0A0), 0.7f, 0.02f * CFDS, 0.96f, 0.80f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 1, 20, 0, 0, 30, 0, 80, SC_POWDERS, R_TEMP+0.0f +273.15f, 70, "Dead Yeast.", TYPE_PART, NULL},
|
||||
{"THRM", PIXPACK(0xA08090), 0.4f, 0.04f * CFDS, 0.94f, 0.95f, -0.1f, 0.3f, 0.00f, 0.000f * CFDS, 1, 0, 0, 2, 2, 1, 90, SC_EXPLOSIVE, R_TEMP+0.0f +273.15f, 211, "Thermite. Burns at extremly high temperature.", TYPE_PART, NULL},
|
||||
@ -361,7 +361,7 @@ static const part_type ptypes[PT_NUM] =
|
||||
{"BCOL", PIXPACK(0x333333), 0.4f, 0.04f * CFDS, 0.94f, 0.95f, -0.1f, 0.3f, 0.00f, 0.000f * CFDS, 1, 0, 0, 5, 2, 1, 90, SC_POWDERS, R_TEMP+0.0f +273.15f, 150, "Broken Coal. Heavy particles. See COAL", TYPE_PART, NULL},
|
||||
{"PCLN", PIXPACK(0x3B3B10), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Solid. When actived, duplicates any particles it touches.", TYPE_SOLID, NULL},
|
||||
{"HSWC", PIXPACK(0x3B1010), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Heat switch. Conducts Heat only when activated", TYPE_SOLID, NULL},
|
||||
{"IRON", PIXPACK(0x707070), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 50, 1, 100, SC_CRACKER2, R_TEMP+0.0f +273.15f, 251, "Rusts with salt, can be used for electrlosis of WATR", TYPE_SOLID, NULL},
|
||||
{"IRON", PIXPACK(0x707070), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 50, 1, 100, SC_CRACKER2, R_TEMP+0.0f +273.15f, 251, "Rusts with salt, can be used for electrlosis of WATR", TYPE_SOLID | PROP_CONDUCTS, NULL},
|
||||
{"MORT", PIXPACK(0xE0E0E0), 0.0f, 0.00f * CFDS, 1.00f, 1.00f, -0.99f, 0.0f, 0.01f, 0.002f * CFDS, 0, 0, 0, 0, 0, 1, -1, SC_CRACKER2, R_TEMP+4.0f +273.15f, 60, "Steam Train.", TYPE_PART, NULL},
|
||||
{"GOL ", PIXPACK(0x0CAC00), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_LIFE, 9000.0f, 40, "Game Of Life! B3/S23", TYPE_SOLID|PROP_LIFE, NULL},
|
||||
{"HLIF", PIXPACK(0xFF0000), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_LIFE, 9000.0f, 40, "High Life! B36/S23", TYPE_SOLID|PROP_LIFE, NULL},
|
||||
@ -391,14 +391,14 @@ static const part_type ptypes[PT_NUM] =
|
||||
{"BIZR", PIXPACK(0x00FF77), 0.6f, 0.01f * CFDS, 0.98f, 0.95f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 2, 0, 0, 0, 20, 1, 30, SC_LIQUID, R_TEMP+0.0f +273.15f, 29, "Bizarre... contradicts the normal state changes.", TYPE_LIQUID, NULL},
|
||||
{"BIZG", PIXPACK(0x00FFBB), 1.0f, 0.01f * CFDS, 0.99f, 0.30f, -0.1f, 0.0f, 2.75f, 0.000f * CFDS, 0, 0, 0, 0, 1, 1, 1, SC_CRACKER2, R_TEMP-200.0f+273.15f, 42, "Bizarre gas", TYPE_GAS, NULL},
|
||||
{"BIZS", PIXPACK(0x00E455), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_CRACKER2, R_TEMP+300.0f+273.15f, 251, "Bizarre solid", TYPE_SOLID, NULL},
|
||||
{"INST", PIXPACK(0x404039), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Instantly conducts, PSCN to charge, NSCN to take.", TYPE_SOLID|PROP_CONDUCTS, NULL},
|
||||
{"INST", PIXPACK(0x404039), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "Instantly conducts, PSCN to charge, NSCN to take.", TYPE_SOLID, NULL},
|
||||
{"ISOZ", PIXPACK(0xAA30D0), 0.6f, 0.01f * CFDS, 0.98f, 0.95f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 2, 0, 0, 0, 0, 1, 24, SC_NUCLEAR, R_TEMP-2.0f +273.15f, 29, "Radioactive liquid", TYPE_LIQUID|PROP_NEUTPENETRATE, NULL},
|
||||
{"ISZS", PIXPACK(0x662089), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, -0.0007f* CFDS, 0, 0, 0, 1, 1, 1, 100, SC_NUCLEAR, 140.00f, 251, "Solid form of ISOZ, slowly decays.", TYPE_SOLID, NULL},
|
||||
{"PRTI", PIXPACK(0xEB5917), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, -0.005f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_NUCLEAR, R_TEMP+0.0f +273.15f, 0, "Portal IN. Things go in here, now with channels (same as WIFI)", TYPE_SOLID, NULL},
|
||||
{"PRTO", PIXPACK(0x0020EB), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.005f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_NUCLEAR, R_TEMP+0.0f +273.15f, 0, "Portal OUT. Things come out here, now with channels (same as WIFI)", TYPE_SOLID, NULL},
|
||||
{"PSTE", PIXPACK(0xAA99AA), 0.6f, 0.01f * CFDS, 0.98f, 0.95f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 2, 0, 0, 0, 20, 1, 31, SC_LIQUID, R_TEMP-2.0f +273.15f, 29, "Colloid, Hardens under pressure", TYPE_LIQUID, NULL},
|
||||
{"PSTS", PIXPACK(0x776677), 0.0f, 0.00f * CFDS, 0.00f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 20, 0, 100, SC_CRACKER, R_TEMP-2.0f +273.15f, 29, "Solid form of PSTE, temporary", TYPE_SOLID, NULL},
|
||||
{"ANAR", PIXPACK(0xFFFFEE), 0.7f, 0.02f * CFDS, 0.96f, 0.80f, 0.1f, 0.1f, 0.00f, 0.000f * CFDS, 1, 10, 0, 0, 30, 1, 85, SC_POWDERS, R_TEMP+0.0f +273.15f, 70, "Very light dust. Behaves opposite gravity", TYPE_PART, NULL},
|
||||
{"ANAR", PIXPACK(0xFFFFEE), -0.7f, -0.02f * CFDS, 0.96f, 0.80f, 0.1f, -0.1f, 0.00f, 0.000f * CFDS, 1, 10, 0, 0, 30, 1, 85, SC_POWDERS, R_TEMP+0.0f +273.15f, 70, "Very light dust. Behaves opposite gravity", TYPE_PART, NULL},
|
||||
{"VINE", PIXPACK(0x079A00), 0.0f, 0.00f * CFDS, 0.95f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 20, 0, 0, 10, 1, 100, SC_SOLIDS, R_TEMP+0.0f +273.15f, 65, "Vine, grows", TYPE_SOLID, NULL},
|
||||
{"INVS", PIXPACK(0x00CCCC), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 15, 1, 100, SC_SOLIDS, R_TEMP+0.0f +273.15f, 164, "Invisible to everything while under pressure.", TYPE_SOLID | PROP_NEUTPASS, NULL},
|
||||
{"EQVE", PIXPACK(0xFFE0A0), 0.7f, 0.02f * CFDS, 0.96f, 0.80f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 1, 0, 0, 0, 30, 0, 85, SC_CRACKER2, R_TEMP+0.0f +273.15f, 70, "Shared velocity test", TYPE_PART, NULL},
|
||||
@ -417,7 +417,7 @@ static const part_type ptypes[PT_NUM] =
|
||||
{"BOMB", PIXPACK(0xFFF288), 0.6f, 0.01f * CFDS, 0.98f, 0.95f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 1, 0, 0, 0, 20, 1, 30, SC_EXPLOSIVE, R_TEMP-2.0f +273.15f, 29, "Bomb.", TYPE_PART, NULL},
|
||||
{"C-5", PIXPACK(0x2050E0), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 1, 1, 100, SC_EXPLOSIVE, R_TEMP+0.0f +273.15f, 88, "Cold explosive", TYPE_SOLID | PROP_NEUTPENETRATE, NULL},
|
||||
{"SING", PIXPACK(0x242424), 0.7f, 0.36f * CFDS, 0.96f, 0.80f, 0.1f, 0.12f, 0.00f, -0.001f * CFDS, 1, 0, 0, 0, 0, 1, 86, SC_NUCLEAR, R_TEMP+0.0f +273.15f, 70, "Singularity", TYPE_PART, NULL},
|
||||
{"QRTZ", PIXPACK(0xAADDDD), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_SOLIDS, R_TEMP+0.0f +273.15f, 3, "Quartz, breakable mineral. Conducts but becomes brittle at lower temperatures.", TYPE_SOLID| PROP_HOT_GLOW, NULL},
|
||||
{"QRTZ", PIXPACK(0xAADDDD), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_SOLIDS, R_TEMP+0.0f +273.15f, 3, "Quartz, breakable mineral. Conducts but becomes brittle at lower temperatures.", TYPE_SOLID | PROP_CONDUCTS | PROP_HOT_GLOW, NULL},
|
||||
{"PQRT", PIXPACK(0x88BBBB), 0.4f, 0.04f * CFDS, 0.94f, 0.95f, -0.1f, 0.27f, 0.00f, 0.000f * CFDS, 1, 0, 0, 0, 0, 1, 90, SC_POWDERS, R_TEMP+0.0f +273.15f, 3, "Broken quartz.", TYPE_PART| PROP_HOT_GLOW, NULL},
|
||||
{"SEED", PIXPACK(0xFBEC7D), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_LIFE, 9000.0f, 40, "B2/S", TYPE_SOLID|PROP_LIFE, NULL},
|
||||
{"MAZE", PIXPACK(0xA8E4A0), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_LIFE, 9000.0f, 40, "B3/S12345", TYPE_SOLID|PROP_LIFE, NULL},
|
||||
|
@ -1478,7 +1478,12 @@ void draw_parts(pixel *vid)
|
||||
cb = 0;
|
||||
blendpixel(vid, nx, ny, cr, cg, cb, 255);
|
||||
}
|
||||
else if(cmode==CM_FANCY)
|
||||
else if(cmode==CM_FANCY &&
|
||||
t!=PT_FIRE && t!=PT_PLSM && t!=PT_WTRV &&
|
||||
t!=PT_HFLM && t!=PT_SPRK && t!=PT_FIRW &&
|
||||
t!=PT_DUST && t!=PT_FIRW && t!=PT_FWRK &&
|
||||
t!=PT_NEUT && t!=PT_LAVA && t!=PT_BOMB &&
|
||||
t!=PT_PHOT && t!=PT_THDR && t!=PT_SMKE)
|
||||
{
|
||||
if(ptypes[parts[i].type].properties&TYPE_LIQUID)
|
||||
{
|
||||
@ -1934,13 +1939,21 @@ void draw_parts(pixel *vid)
|
||||
}
|
||||
else if(t==PT_ACID)
|
||||
{
|
||||
if(parts[i].life>255) parts[i].life = 255;
|
||||
if(parts[i].life<47) parts[i].life = 48;
|
||||
s = (255/((parts[i].life-46)*28));
|
||||
if(parts[i].life>75) parts[i].life = 75;
|
||||
if(parts[i].life<49) parts[i].life = 49;
|
||||
s = (parts[i].life-49)*3;
|
||||
if(s==0) s = 1;
|
||||
cr = PIXR(ptypes[t].pcolors)/s;
|
||||
cg = PIXG(ptypes[t].pcolors)/s;
|
||||
cb = PIXB(ptypes[t].pcolors)/s;
|
||||
cr = 0x86 + s*4;
|
||||
cg = 0x36 + s*1;
|
||||
cb = 0x90 + s*2;
|
||||
|
||||
if(cr>=255)
|
||||
cr = 255;
|
||||
if(cg>=255)
|
||||
cg = 255;
|
||||
if(cb>=255)
|
||||
cb = 255;
|
||||
|
||||
blendpixel(vid, nx, ny, cr, cg, cb, 255);
|
||||
|
||||
if(cmode==CM_BLOB)
|
||||
@ -3373,9 +3386,15 @@ void sdl_open(void)
|
||||
//glFlush ();
|
||||
#else
|
||||
#ifdef PIX16
|
||||
sdl_scrn=SDL_SetVideoMode(XRES*sdl_scale + BARSIZE*sdl_scale,YRES*sdl_scale + MENUSIZE*sdl_scale,16,SDL_SWSURFACE);
|
||||
if(kiosk_enable)
|
||||
sdl_scrn=SDL_SetVideoMode(XRES*sdl_scale + BARSIZE*sdl_scale,YRES*sdl_scale + MENUSIZE*sdl_scale,16,SDL_FULLSCREEN|SDL_SWSURFACE);
|
||||
else
|
||||
sdl_scrn=SDL_SetVideoMode(XRES*sdl_scale + BARSIZE*sdl_scale,YRES*sdl_scale + MENUSIZE*sdl_scale,16,SDL_SWSURFACE);
|
||||
#else
|
||||
sdl_scrn=SDL_SetVideoMode(XRES*sdl_scale + BARSIZE*sdl_scale,YRES*sdl_scale + MENUSIZE*sdl_scale,32,SDL_SWSURFACE);
|
||||
if(kiosk_enable)
|
||||
sdl_scrn=SDL_SetVideoMode(XRES*sdl_scale + BARSIZE*sdl_scale,YRES*sdl_scale + MENUSIZE*sdl_scale,32,SDL_FULLSCREEN|SDL_SWSURFACE);
|
||||
else
|
||||
sdl_scrn=SDL_SetVideoMode(XRES*sdl_scale + BARSIZE*sdl_scale,YRES*sdl_scale + MENUSIZE*sdl_scale,32,SDL_SWSURFACE);
|
||||
#endif
|
||||
#endif
|
||||
if(!sdl_scrn)
|
||||
|
@ -134,6 +134,7 @@ int core_count()
|
||||
}
|
||||
|
||||
int mousex = 0, mousey = 0; //They contain mouse position
|
||||
int kiosk_enable = 0;
|
||||
|
||||
void sdl_seticon(void)
|
||||
{
|
||||
@ -1161,6 +1162,12 @@ int main(int argc, char *argv[])
|
||||
else if(!strncmp(argv[i], "nohud", 5))
|
||||
{
|
||||
hud_enable = 0;
|
||||
}
|
||||
else if(!strncmp(argv[i], "kiosk", 5))
|
||||
{
|
||||
kiosk_enable = 1;
|
||||
sdl_scale = 2;
|
||||
hud_enable = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2202,6 +2209,8 @@ int main(int argc, char *argv[])
|
||||
c = 0;
|
||||
if(c!=WL_STREAM+100&&c!=SPC_AIR&&c!=SPC_HEAT&&c!=SPC_COOL&&c!=SPC_VACUUM&&!REPLACE_MODE)
|
||||
flood_parts(x, y, c, -1, -1);
|
||||
if(c==SPC_HEAT || c==SPC_COOL)
|
||||
create_parts(x, y, bsx, bsy, c);
|
||||
lx = x;
|
||||
ly = y;
|
||||
lb = 0;
|
||||
|
285
src/powder.c
285
src/powder.c
@ -485,17 +485,23 @@ inline int create_part(int p, int x, int y, int t)
|
||||
{
|
||||
if(t==SPC_HEAT&&parts[pmap[y][x]>>8].temp<MAX_TEMP)
|
||||
{
|
||||
if((pmap[y][x]&0xFF)==PT_PUMP)
|
||||
parts[pmap[y][x]>>8].temp = restrict_flt(parts[pmap[y][x]>>8].temp + 0.1f, MIN_TEMP, MAX_TEMP);
|
||||
else
|
||||
parts[pmap[y][x]>>8].temp = restrict_flt(parts[pmap[y][x]>>8].temp + 4.0f, MIN_TEMP, MAX_TEMP);
|
||||
if((pmap[y][x]&0xFF)==PT_PUMP) {
|
||||
parts[pmap[y][x]>>8].temp = restrict_flt(parts[pmap[y][x]>>8].temp + 0.1f, MIN_TEMP, MAX_TEMP);
|
||||
} else if((sdl_mod & (KMOD_SHIFT)) && (sdl_mod & (KMOD_CTRL))) {
|
||||
parts[pmap[y][x]>>8].temp = restrict_flt(parts[pmap[y][x]>>8].temp + 50.0f, MIN_TEMP, MAX_TEMP);
|
||||
} else {
|
||||
parts[pmap[y][x]>>8].temp = restrict_flt(parts[pmap[y][x]>>8].temp + 4.0f, MIN_TEMP, MAX_TEMP);
|
||||
}
|
||||
}
|
||||
if(t==SPC_COOL&&parts[pmap[y][x]>>8].temp>MIN_TEMP)
|
||||
{
|
||||
if((pmap[y][x]&0xFF)==PT_PUMP)
|
||||
parts[pmap[y][x]>>8].temp = restrict_flt(parts[pmap[y][x]>>8].temp - 0.1f, MIN_TEMP, MAX_TEMP);
|
||||
else
|
||||
parts[pmap[y][x]>>8].temp = restrict_flt(parts[pmap[y][x]>>8].temp - 4.0f, MIN_TEMP, MAX_TEMP);
|
||||
if((pmap[y][x]&0xFF)==PT_PUMP) {
|
||||
parts[pmap[y][x]>>8].temp = restrict_flt(parts[pmap[y][x]>>8].temp - 0.1f, MIN_TEMP, MAX_TEMP);
|
||||
} else if((sdl_mod & (KMOD_SHIFT)) && (sdl_mod & (KMOD_CTRL))) {
|
||||
parts[pmap[y][x]>>8].temp = restrict_flt(parts[pmap[y][x]>>8].temp - 50.0f, MIN_TEMP, MAX_TEMP);
|
||||
} else {
|
||||
parts[pmap[y][x]>>8].temp = restrict_flt(parts[pmap[y][x]>>8].temp - 4.0f, MIN_TEMP, MAX_TEMP);
|
||||
}
|
||||
}
|
||||
return pmap[y][x]>>8;
|
||||
}
|
||||
@ -1236,11 +1242,11 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
if(ISGOL==1&&CGOL>=GSPEED)//GSPEED is frames per generation
|
||||
{
|
||||
int createdsomething = 0;
|
||||
CGOL=0;
|
||||
ISGOL=0;
|
||||
for(nx=CELL;nx<XRES-CELL;nx++)
|
||||
for(ny=CELL;ny<YRES-CELL;ny++)
|
||||
{
|
||||
CGOL=0;
|
||||
ISGOL=0;
|
||||
r = pmap[ny][nx];
|
||||
if((r>>8)>=NPART || !r)
|
||||
{
|
||||
@ -1317,7 +1323,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
{
|
||||
if(!(parts[i].life==10&&(parts[i].type==PT_LCRY||parts[i].type==PT_PCLN||parts[i].type==PT_HSWC||parts[i].type==PT_PUMP)))
|
||||
parts[i].life--;
|
||||
if(parts[i].life<=0 && t!=PT_METL && t!=PT_ARAY && t!=PT_IRON && t!=PT_FIRW && t!=PT_PCLN && t!=PT_HSWC && t!=PT_PUMP && t!=PT_WATR && t!=PT_RBDM && t!=PT_LRBD && t!=PT_SLTW && t!=PT_BRMT && t!=PT_PSCN && t!=PT_NSCN && t!=PT_NTCT && t!=PT_PTCT && t!=PT_BMTL && t!=PT_SPRK && t!=PT_LAVA && t!=PT_ETRD&&t!=PT_LCRY && t!=PT_INWR && t!=PT_QRTZ && t!=PT_GLOW && t!= PT_FOG && t!=PT_PIPE && t!=PT_FRZW &&(t!=PT_ICEI&&parts[i].ctype!=PT_FRZW)&&t!=PT_INST && t!=PT_SHLD1&& t!=PT_SHLD2&& t!=PT_SHLD3&& t!=PT_SHLD4)
|
||||
if(parts[i].life<=0 && !(ptypes[t].properties&PROP_CONDUCTS) && t!=PT_ARAY && t!=PT_FIRW && t!=PT_PCLN && t!=PT_HSWC && t!=PT_PUMP && t!=PT_SPRK && t!=PT_LAVA && t!=PT_LCRY && t!=PT_QRTZ && t!=PT_GLOW && t!= PT_FOG && t!=PT_PIPE && t!=PT_FRZW &&(t!=PT_ICEI&&parts[i].ctype!=PT_FRZW)&&t!=PT_INST && t!=PT_SHLD1&& t!=PT_SHLD2&& t!=PT_SHLD3&& t!=PT_SHLD4)
|
||||
{
|
||||
kill_part(i);
|
||||
continue;
|
||||
@ -1365,18 +1371,9 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
continue;
|
||||
}
|
||||
|
||||
vx[y/CELL][x/CELL] *= ptypes[t].airloss;
|
||||
vy[y/CELL][x/CELL] *= ptypes[t].airloss;
|
||||
if(t==PT_ANAR)
|
||||
{
|
||||
vx[y/CELL][x/CELL] -= ptypes[t].airdrag*parts[i].vx;
|
||||
vy[y/CELL][x/CELL] -= ptypes[t].airdrag*parts[i].vy;
|
||||
}
|
||||
else
|
||||
{
|
||||
vx[y/CELL][x/CELL] += ptypes[t].airdrag*parts[i].vx;
|
||||
vy[y/CELL][x/CELL] += ptypes[t].airdrag*parts[i].vy;
|
||||
}
|
||||
vx[y/CELL][x/CELL] = vx[y/CELL][x/CELL]*ptypes[t].airloss + ptypes[t].airdrag*parts[i].vx;
|
||||
vy[y/CELL][x/CELL] = vy[y/CELL][x/CELL]*ptypes[t].airloss + ptypes[t].airdrag*parts[i].vy;
|
||||
|
||||
if(t==PT_GAS||t==PT_NBLE)
|
||||
{
|
||||
if(pv[y/CELL][x/CELL]<3.5f)
|
||||
@ -1517,16 +1514,8 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
|
||||
}
|
||||
|
||||
if(t==PT_ANAR)
|
||||
{
|
||||
parts[i].vx -= ptypes[t].advection*vx[y/CELL][x/CELL] + pGravX;
|
||||
parts[i].vy -= ptypes[t].advection*vy[y/CELL][x/CELL] + pGravY;
|
||||
}
|
||||
else{
|
||||
parts[i].vx += ptypes[t].advection*vx[y/CELL][x/CELL] + pGravX;
|
||||
parts[i].vy += ptypes[t].advection*vy[y/CELL][x/CELL] + pGravY;
|
||||
|
||||
}
|
||||
parts[i].vx += ptypes[t].advection*vx[y/CELL][x/CELL] + pGravX;
|
||||
parts[i].vy += ptypes[t].advection*vy[y/CELL][x/CELL] + pGravY;
|
||||
}
|
||||
|
||||
if(ptypes[t].diffusion)
|
||||
@ -1735,110 +1724,122 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
}
|
||||
}
|
||||
}
|
||||
if(pt>=pstates[t].btemp&&pstates[t].burn)
|
||||
{
|
||||
t = parts[i].type = pstates[t].burn;
|
||||
if(t==PT_FIRE||t==PT_PLSM)
|
||||
parts[i].life = rand()%50+120;
|
||||
}
|
||||
else if((pt<=pstates[t].stemp||(t==PT_LAVA&&(pt<=pstates[parts[i].ctype].ltemp)))&&pstates[t].solid)
|
||||
{
|
||||
if(t==PT_LAVA&&parts[i].ctype)
|
||||
{
|
||||
parts[i].life = 0;
|
||||
if(parts[i].ctype==PT_THRM)
|
||||
{
|
||||
parts[i].tmp = 0;
|
||||
parts[i].ctype = PT_BMTL;
|
||||
}
|
||||
if(parts[i].ctype==PT_PLUT)
|
||||
{
|
||||
parts[i].tmp = 0;
|
||||
parts[i].ctype = PT_LAVA;
|
||||
}
|
||||
t = parts[i].type = parts[i].ctype;
|
||||
parts[i].ctype = PT_NONE;
|
||||
}
|
||||
else if(pstates[t].solid==PT_ICEI&&pt<=pstates[t].stemp)
|
||||
{
|
||||
parts[i].ctype = parts[i].type;
|
||||
t = parts[i].type = PT_ICEI;
|
||||
}
|
||||
else
|
||||
{
|
||||
parts[i].life = 0;
|
||||
t = parts[i].type = pstates[t].solid;
|
||||
}
|
||||
}
|
||||
else if((pt>=pstates[t].ltemp&&(pt<=pstates[t].gtemp||!pstates[t].gas)&&pstates[t].state==ST_SOLID&&pstates[t].liquid)||(t==PT_ICEI&&pt>pstates[parts[i].ctype].stemp))
|
||||
{
|
||||
if(pstates[t].liquid==PT_LAVA)
|
||||
{
|
||||
parts[i].life = rand()%120+240;
|
||||
parts[i].ctype = (parts[i].type==PT_BRMT)?PT_BMTL:parts[i].type;
|
||||
parts[i].ctype = (parts[i].ctype==PT_SAND)?PT_GLAS:parts[i].ctype;
|
||||
parts[i].ctype = (parts[i].ctype==PT_BGLA)?PT_GLAS:parts[i].ctype;
|
||||
parts[i].ctype = (parts[i].ctype==PT_PQRT)?PT_QRTZ:parts[i].ctype;
|
||||
t = parts[i].type = pstates[t].liquid;
|
||||
}
|
||||
else if(t==PT_ICEI&&parts[i].ctype)
|
||||
{
|
||||
t = parts[i].type = parts[i].ctype;
|
||||
parts[i].ctype = PT_NONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
t = parts[i].type = pstates[t].liquid;
|
||||
}
|
||||
}
|
||||
else if(pt-ctemp<=pstates[t].ltemp&&pstates[t].liquid&&pstates[t].state==ST_GAS)
|
||||
{
|
||||
t = parts[i].type = pstates[t].liquid;
|
||||
}
|
||||
else if(pt-ctemp>=pstates[t].gtemp&&(pstates[t].gas||parts[i].type==PT_LNTG)&&(pstates[t].state==ST_LIQUID||pstates[t].state==ST_SOLID))
|
||||
{
|
||||
if(t==PT_SLTW&&1>rand()%6)
|
||||
{
|
||||
t = parts[i].type = PT_SALT;
|
||||
}
|
||||
else
|
||||
{
|
||||
if((t==PT_BIZR||t==PT_BIZRG||t==PT_BIZRS)&&pt>=pstates[t].gtemp)
|
||||
{
|
||||
t = parts[i].type = pstates[t].gas;
|
||||
}
|
||||
else{
|
||||
t = parts[i].type = pstates[t].gas;
|
||||
pv[y/CELL][x/CELL] += 0.50f;
|
||||
}
|
||||
if(y-2 >= 0 && y-2 < YRES && ptypes[t].properties&TYPE_LIQUID){
|
||||
float swappage;
|
||||
r = pmap[y-2][x];
|
||||
if(!((r>>8)>=NPART || !r || parts[i].type != (r&0xFF))){
|
||||
if(parts[i].temp>parts[r>>8].temp){
|
||||
swappage = parts[i].temp;
|
||||
parts[i].temp = parts[r>>8].temp;
|
||||
parts[r>>8].temp = swappage;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(t==PT_FIRE)
|
||||
parts[i].life = rand()%50+120;
|
||||
if(t==PT_HFLM)
|
||||
parts[i].life = rand()%50+120;
|
||||
}
|
||||
}
|
||||
if(t==PT_URAN && pv[y/CELL][x/CELL]>0.0f)
|
||||
{
|
||||
float atemp = parts[i].temp + (-MIN_TEMP);
|
||||
pt = parts[i].temp = (atemp*(1+(pv[y/CELL][x/CELL]/2000)))+MIN_TEMP;
|
||||
}
|
||||
if(t==PT_LAVA)
|
||||
{
|
||||
parts[i].life = restrict_flt((pt-700)/7, 0.0f, 400.0f);
|
||||
if(parts[i].ctype==PT_THRM&&parts[i].tmp>0)
|
||||
{
|
||||
parts[i].tmp--;
|
||||
parts[i].temp = 3500;
|
||||
}
|
||||
if(parts[i].ctype==PT_PLUT&&parts[i].tmp>0)
|
||||
{
|
||||
parts[i].tmp--;
|
||||
parts[i].temp = MAX_TEMP;
|
||||
}
|
||||
}
|
||||
pt = parts[i].temp = restrict_flt(parts[i].temp, MIN_TEMP, MAX_TEMP);
|
||||
}
|
||||
if(pt>=pstates[t].btemp&&pstates[t].burn)
|
||||
{
|
||||
t = parts[i].type = pstates[t].burn;
|
||||
if(t==PT_FIRE||t==PT_PLSM)
|
||||
parts[i].life = rand()%50+120;
|
||||
}
|
||||
else if((pt<=pstates[t].stemp||(t==PT_LAVA&&(pt<=pstates[parts[i].ctype].ltemp)))&&pstates[t].solid)
|
||||
{
|
||||
if(t==PT_LAVA&&parts[i].ctype)
|
||||
{
|
||||
parts[i].life = 0;
|
||||
if(parts[i].ctype==PT_THRM)
|
||||
{
|
||||
parts[i].tmp = 0;
|
||||
parts[i].ctype = PT_BMTL;
|
||||
}
|
||||
if(parts[i].ctype==PT_PLUT)
|
||||
{
|
||||
parts[i].tmp = 0;
|
||||
parts[i].ctype = PT_LAVA;
|
||||
}
|
||||
t = parts[i].type = parts[i].ctype;
|
||||
parts[i].ctype = PT_NONE;
|
||||
}
|
||||
else if(pstates[t].solid==PT_ICEI&&pt<=pstates[t].stemp)
|
||||
{
|
||||
parts[i].ctype = parts[i].type;
|
||||
t = parts[i].type = PT_ICEI;
|
||||
}
|
||||
else
|
||||
{
|
||||
parts[i].life = 0;
|
||||
t = parts[i].type = pstates[t].solid;
|
||||
}
|
||||
}
|
||||
else if((pt>=pstates[t].ltemp&&(pt<=pstates[t].gtemp||!pstates[t].gas)&&pstates[t].state==ST_SOLID&&pstates[t].liquid)||(t==PT_ICEI&&pt>pstates[parts[i].ctype].stemp))
|
||||
{
|
||||
if(pstates[t].liquid==PT_LAVA)
|
||||
{
|
||||
parts[i].life = rand()%120+240;
|
||||
parts[i].ctype = (parts[i].type==PT_BRMT)?PT_BMTL:parts[i].type;
|
||||
parts[i].ctype = (parts[i].ctype==PT_SAND)?PT_GLAS:parts[i].ctype;
|
||||
parts[i].ctype = (parts[i].ctype==PT_BGLA)?PT_GLAS:parts[i].ctype;
|
||||
parts[i].ctype = (parts[i].ctype==PT_PQRT)?PT_QRTZ:parts[i].ctype;
|
||||
t = parts[i].type = pstates[t].liquid;
|
||||
}
|
||||
else if(t==PT_ICEI&&parts[i].ctype)
|
||||
{
|
||||
t = parts[i].type = parts[i].ctype;
|
||||
parts[i].ctype = PT_NONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
t = parts[i].type = pstates[t].liquid;
|
||||
}
|
||||
}
|
||||
else if(pt-ctemp<=pstates[t].ltemp&&pstates[t].liquid&&pstates[t].state==ST_GAS)
|
||||
{
|
||||
t = parts[i].type = pstates[t].liquid;
|
||||
}
|
||||
else if(pt-ctemp>=pstates[t].gtemp&&(pstates[t].gas||parts[i].type==PT_LNTG)&&(pstates[t].state==ST_LIQUID||pstates[t].state==ST_SOLID))
|
||||
{
|
||||
if(t==PT_SLTW&&1>rand()%6)
|
||||
{
|
||||
t = parts[i].type = PT_SALT;
|
||||
}
|
||||
else
|
||||
{
|
||||
if((t==PT_BIZR||t==PT_BIZRG||t==PT_BIZRS)&&pt>=pstates[t].gtemp)
|
||||
{
|
||||
t = parts[i].type = pstates[t].gas;
|
||||
}
|
||||
else{
|
||||
t = parts[i].type = pstates[t].gas;
|
||||
pv[y/CELL][x/CELL] += 0.50f;
|
||||
}
|
||||
|
||||
if(t==PT_FIRE)
|
||||
parts[i].life = rand()%50+120;
|
||||
if(t==PT_HFLM)
|
||||
parts[i].life = rand()%50+120;
|
||||
}
|
||||
}
|
||||
if(t==PT_URAN && pv[y/CELL][x/CELL]>0.0f)
|
||||
{
|
||||
float atemp = parts[i].temp + (-MIN_TEMP);
|
||||
pt = parts[i].temp = (atemp*(1+(pv[y/CELL][x/CELL]/2000)))+MIN_TEMP;
|
||||
}
|
||||
if(t==PT_LAVA)
|
||||
{
|
||||
parts[i].life = restrict_flt((pt-700)/7, 0.0f, 400.0f);
|
||||
if(parts[i].ctype==PT_THRM&&parts[i].tmp>0)
|
||||
{
|
||||
parts[i].tmp--;
|
||||
parts[i].temp = 3500;
|
||||
}
|
||||
if(parts[i].ctype==PT_PLUT&&parts[i].tmp>0)
|
||||
{
|
||||
parts[i].tmp--;
|
||||
parts[i].temp = MAX_TEMP;
|
||||
}
|
||||
}
|
||||
pt = parts[i].temp = restrict_flt(parts[i].temp, MIN_TEMP, MAX_TEMP);
|
||||
}
|
||||
}
|
||||
if(t==PT_PTCT&&parts[i].temp>295.0f)
|
||||
{
|
||||
@ -1849,7 +1850,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
pt = parts[i].temp -= 2.5f;
|
||||
}
|
||||
|
||||
if(t==PT_WATR || t==PT_ETRD || t==PT_SLTW || t==PT_METL || t==PT_IRON || t==PT_RBDM || t==PT_LRBD || t==PT_BRMT || t==PT_PSCN || t==PT_NSCN || t==PT_NTCT || t==PT_PTCT || t==PT_BMTL || t==PT_SPRK|| t == PT_NBLE || t==PT_INWR)
|
||||
if((ptypes[t].properties&PROP_CONDUCTS) || t==PT_SPRK)
|
||||
{
|
||||
nx = x % CELL;
|
||||
if(nx == 0)
|
||||
@ -1867,7 +1868,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
ny = y/CELL;
|
||||
if(nx>=0 && ny>=0 && nx<XRES/CELL && ny<YRES/CELL)
|
||||
{
|
||||
if(t==PT_WATR || t==PT_ETRD || t==PT_SLTW || t==PT_METL || t==PT_IRON || t==PT_RBDM || t==PT_LRBD || t==PT_NSCN || t==PT_NTCT || t==PT_PTCT || t==PT_PSCN || t==PT_BRMT || t==PT_BMTL||t==PT_NBLE || t==PT_INWR)
|
||||
if(t!=PT_SPRK)
|
||||
{
|
||||
if(emap[ny][nx]==12 && !parts[i].life)
|
||||
{
|
||||
@ -1898,7 +1899,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
r = pmap[y+ny][x+nx];
|
||||
if((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if(((r&0xFF)==PT_METL || (r&0xFF)==PT_IRON || (r&0xFF)==PT_ETRD || (r&0xFF)==PT_PSCN || (r&0xFF)==PT_NSCN || (r&0xFF)==PT_NTCT || (r&0xFF)==PT_PTCT || (r&0xFF)==PT_BMTL || (r&0xFF)==PT_RBDM || (r&0xFF)==PT_LRBD || (r&0xFF)==PT_BRMT || (r&0xFF)==PT_NBLE || (r&0xFF)==PT_INWR) && parts[r>>8].ctype!=PT_SPRK)
|
||||
if((ptypes[r&0xFF].properties&PROP_CONDUCTS) && parts[r>>8].life==0 && !((r&0xFF)==PT_WATR||(r&0xFF)==PT_SLTW) && parts[r>>8].ctype!=PT_SPRK)
|
||||
{
|
||||
t = parts[i].type = PT_NONE;
|
||||
parts[r>>8].ctype = parts[r>>8].type;
|
||||
@ -2488,7 +2489,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
parts[r>>8].type = PT_NONE;
|
||||
}
|
||||
}
|
||||
else if (parts[i].life==50)
|
||||
else if (parts[i].life<=50)
|
||||
{
|
||||
parts[i].life = 0;
|
||||
t = parts[i].type = PT_NONE;
|
||||
@ -3810,7 +3811,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
rt = parts[r>>8].type;
|
||||
if(parts_avg(i,r>>8,PT_INSL) != PT_INSL)
|
||||
{
|
||||
if((rt==PT_METL||rt==PT_IRON||rt==PT_ETRD||rt==PT_BMTL||rt==PT_BRMT||rt==PT_LRBD||rt==PT_RBDM||rt==PT_PSCN||rt==PT_NSCN||rt==PT_NBLE)&&parts[r>>8].life==0 && abs(nx)+abs(ny) < 4)
|
||||
if((ptypes[rt].properties&PROP_CONDUCTS) && !(rt==PT_WATR||rt==PT_SLTW||rt==PT_NTCT||rt==PT_PTCT||rt==PT_INWR) && parts[r>>8].life==0 && abs(nx)+abs(ny) < 4)
|
||||
{
|
||||
parts[r>>8].life = 4;
|
||||
parts[r>>8].ctype = rt;
|
||||
@ -3976,7 +3977,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
pavg = parts_avg(i, r>>8,PT_INSL);
|
||||
if(pavg != PT_INSL)
|
||||
{
|
||||
if(t==PT_SPRK && (rt==PT_METL||rt==PT_IRON||rt==PT_ETRD||rt==PT_BMTL||rt==PT_BRMT||rt==PT_LRBD||rt==PT_RBDM||rt==PT_PSCN||rt==PT_NSCN||rt==PT_NBLE) && parts[r>>8].life==0 &&
|
||||
if(t==PT_SPRK && (ptypes[rt].properties&PROP_CONDUCTS) && !(rt==PT_WATR||rt==PT_SLTW||rt==PT_NTCT||rt==PT_PTCT||rt==PT_INWR) && parts[r>>8].life==0 &&
|
||||
(parts[i].life<3 || ((r>>8)<i && parts[i].life<4)) && abs(nx)+abs(ny)<4)
|
||||
{
|
||||
if(!(rt==PT_PSCN&&parts[i].ctype==PT_NSCN)&&!(rt!=PT_PSCN&&!(rt==PT_NSCN&&parts[i].temp>=373.0f)&&parts[i].ctype==PT_NTCT)&&!(rt!=PT_PSCN&&!(rt==PT_NSCN&&parts[i].temp<=373.0f)&&parts[i].ctype==PT_PTCT)&&!(rt!=PT_PSCN&&!(rt==PT_NSCN)&&parts[i].ctype==PT_INWR) && pavg != PT_INSL &&!(parts[i].ctype==PT_SWCH&&(rt==PT_PSCN||rt==PT_NSCN))&&!(parts[i].ctype==PT_INST&&rt!=PT_NSCN) )
|
||||
|
Loading…
Reference in New Issue
Block a user