diff --git a/src/simulation/elements/H2.cpp b/src/simulation/elements/H2.cpp index f7244b0cd..78611134d 100644 --- a/src/simulation/elements/H2.cpp +++ b/src/simulation/elements/H2.cpp @@ -2,48 +2,48 @@ //#TPT-Directive ElementClass Element_H2 PT_H2 148 Element_H2::Element_H2() { - Identifier = "DEFAULT_PT_H2"; - Name = "HYGN"; - Colour = PIXPACK(0x5070FF); - MenuVisible = 1; - MenuSection = SC_GAS; - Enabled = 1; - - Advection = 2.0f; - AirDrag = 0.00f * CFDS; - AirLoss = 0.99f; - Loss = 0.30f; - Collision = -0.10f; - Gravity = 0.00f; - Diffusion = 3.00f; - HotAir = 0.000f * CFDS; - Falldown = 0; - - Flammable = 0; - Explosive = 0; - Meltable = 0; - Hardness = 0; - - Weight = 1; - - Temperature = R_TEMP+0.0f +273.15f; - HeatConduct = 251; - Description = "Combines with O2 to make WATR"; - - State = ST_GAS; - Properties = TYPE_GAS; - - LowPressure = IPL; - LowPressureTransition = NT; - HighPressure = IPH; - HighPressureTransition = NT; - LowTemperature = ITL; - LowTemperatureTransition = NT; - HighTemperature = ITH; - HighTemperatureTransition = NT; - - Update = &Element_H2::update; - + Identifier = "DEFAULT_PT_H2"; + Name = "HYGN"; + Colour = PIXPACK(0x5070FF); + MenuVisible = 1; + MenuSection = SC_GAS; + Enabled = 1; + + Advection = 2.0f; + AirDrag = 0.00f * CFDS; + AirLoss = 0.99f; + Loss = 0.30f; + Collision = -0.10f; + Gravity = 0.00f; + Diffusion = 3.00f; + HotAir = 0.000f * CFDS; + Falldown = 0; + + Flammable = 0; + Explosive = 0; + Meltable = 0; + Hardness = 0; + + Weight = 1; + + Temperature = R_TEMP+0.0f +273.15f; + HeatConduct = 251; + Description = "Combines with O2 to make WATR"; + + State = ST_GAS; + Properties = TYPE_GAS; + + LowPressure = IPL; + LowPressureTransition = NT; + HighPressure = IPH; + HighPressureTransition = NT; + LowTemperature = ITL; + LowTemperatureTransition = NT; + HighTemperature = ITH; + HighTemperatureTransition = NT; + + Update = &Element_H2::update; + } //#TPT-Directive ElementHeader Element_H2 static int update(UPDATE_FUNC_ARGS) @@ -66,22 +66,25 @@ int Element_H2::update(UPDATE_FUNC_ARGS) sim->part_change_type(r>>8,x+rx,y+ry,PT_WATR); sim->part_change_type(i,x,y,PT_OIL); } - if (parts[r>>8].temp > 2273.15)// && pv[y/CELL][x/CELL] > 50.0f) + if (parts[r>>8].temp > 2273.15 && sim->pv[y/CELL][x/CELL] > 45)// && pv[y/CELL][x/CELL] > 50.0f) continue; - if (parts[i].temp < 2273.15) + if (sim->pv[x/CELL][y/CELL]<45) { if (rt==PT_FIRE) { parts[r>>8].temp=2473.15; if(parts[r>>8].tmp&0x02) - parts[r>>8].temp=3473; + parts[r>>8].temp=3473; parts[r>>8].tmp |= 1; } if (rt==PT_FIRE || rt==PT_PLSM || rt==PT_LAVA) { + if(parts[r>>8].tmp&8&&rt==PT_PLSM) + continue; sim->create_part(i,x,y,PT_FIRE); - parts[i].temp+=(rand()/(RAND_MAX/100)); + parts[i].temp+=(rand()%250); parts[i].tmp |= 1; + sim->pv[y/CELL][x/CELL] +=0.1f; } } } @@ -93,11 +96,27 @@ int Element_H2::update(UPDATE_FUNC_ARGS) float temp = parts[i].temp; sim->create_part(i,x,y,PT_NBLE); - j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_NEUT); if (j != -1) parts[j].temp = temp; - if (!(rand()%10)) { j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_ELEC); if (j != -1) parts[j].temp = temp; } - j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PHOT); if (j != -1) { parts[j].ctype = 0xFFFF00; parts[j].temp = temp; } - - j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PLSM); if (j != -1) parts[j].temp = temp; + j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_NEUT); + if (j != -1) + parts[j].temp = temp; + if (!(rand()%10)) + { + j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_ELEC); + if (j != -1) + parts[j].temp = temp; + } + j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PHOT); + if (j != -1) + { + parts[j].ctype = 0xFFFF00; + parts[j].temp = temp; + } + j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PLSM); + if (j != -1) + { + parts[j].temp = temp; + parts[j].tmp |=8; + } parts[i].temp = temp+750+rand()%500; sim->pv[y/CELL][x/CELL] += 30; diff --git a/src/simulation/elements/NBLE.cpp b/src/simulation/elements/NBLE.cpp index 2854c6cc3..68052a1e8 100644 --- a/src/simulation/elements/NBLE.cpp +++ b/src/simulation/elements/NBLE.cpp @@ -63,7 +63,12 @@ int Element_NBLE::update(UPDATE_FUNC_ARGS) if (!(rand()%25)) { j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_ELEC); if (j != -1) parts[j].temp = temp; } j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PHOT); if (j != -1) { parts[j].ctype = 0xFF0000; parts[j].temp = temp; } - j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PLSM); if (j != -1) parts[j].temp = temp; + j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PLSM); + if (j != -1) + { + parts[j].temp = temp; + parts[j].tmp |=8; + } parts[i].temp = temp+1750+rand()%500; sim->pv[y/CELL][x/CELL] += 50; @@ -73,4 +78,4 @@ int Element_NBLE::update(UPDATE_FUNC_ARGS) } -Element_NBLE::~Element_NBLE() {} \ No newline at end of file +Element_NBLE::~Element_NBLE() {} diff --git a/src/simulation/elements/O2.cpp b/src/simulation/elements/O2.cpp index e4eefdf86..a39dcdfc3 100644 --- a/src/simulation/elements/O2.cpp +++ b/src/simulation/elements/O2.cpp @@ -69,6 +69,8 @@ int Element_O2::update(UPDATE_FUNC_ARGS) } if ((r&0xFF)==PT_FIRE || (r&0xFF)==PT_PLSM) { + if((r&0xFF)==PT_PLSM && parts[r>>8].tmp&8) + continue; sim->create_part(i,x,y,PT_FIRE); parts[i].temp+=(rand()/(RAND_MAX/100)); parts[i].tmp |= 2; @@ -83,9 +85,18 @@ int Element_O2::update(UPDATE_FUNC_ARGS) int j; sim->create_part(i,x,y,PT_BRMT); - j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_NEUT); if (j != -1) parts[j].temp = 15000; - j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PHOT); if (j != -1) parts[j].temp = 15000; - j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PLSM); if (j != -1) parts[j].temp = 15000; + j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_NEUT); + if (j != -1) + parts[j].temp = 15000; + j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PHOT); + if (j != -1) + parts[j].temp = 15000; + j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PLSM); + if (j != -1) + { + parts[j].temp = 15000; + parts[j].tmp |= 8; + } parts[i].temp = 15000; sim->pv[y/CELL][x/CELL] += 300;