From 1c7fdb0c26d8bca5a1cb13a790090b87c3d809aa Mon Sep 17 00:00:00 2001 From: Jacob1 Date: Wed, 28 Mar 2012 16:13:49 -0400 Subject: [PATCH] oxygen fusion, fix two small bugs --- src/elements/O2.c | 61 +++++++++++++++++++++++++++++---------------- src/elements/co2.c | 3 ++- src/elements/elec.c | 2 +- 3 files changed, 43 insertions(+), 23 deletions(-) diff --git a/src/elements/O2.c b/src/elements/O2.c index 8ca0f4694..82171ec8b 100644 --- a/src/elements/O2.c +++ b/src/elements/O2.c @@ -18,28 +18,47 @@ int update_O2(UPDATE_FUNC_ARGS) { int r,rx,ry; - for (rx=-2; rx<3; rx++) - for (ry=-2; ry<3; ry++) - if (x+rx>=0 && y+ry>=0 && x+rx=0 && y+ry>=0 && x+rx>8].temp+=(rand()/(RAND_MAX/100)); - if(parts[r>>8].tmp&0x01) - parts[r>>8].temp=3473; - parts[r>>8].tmp |= 2; - } - if ((r&0xFF)==PT_FIRE || (r&0xFF)==PT_PLSM) - { - create_part(i,x,y,PT_FIRE); - parts[i].temp+=(rand()/(RAND_MAX/100)); - parts[i].tmp |= 2; - } + r = pmap[y+ry][x+rx]; + if (!r) + continue; - } + if ((r&0xFF)==PT_FIRE) + { + parts[r>>8].temp+=(rand()/(RAND_MAX/100)); + if(parts[r>>8].tmp&0x01) + parts[r>>8].temp=3473; + parts[r>>8].tmp |= 2; + } + if ((r&0xFF)==PT_FIRE || (r&0xFF)==PT_PLSM) + { + create_part(i,x,y,PT_FIRE); + parts[i].temp+=(rand()/(RAND_MAX/100)); + parts[i].tmp |= 2; + } + + } + } + else if (parts[i].temp > 9973.15 && pv[y/CELL][x/CELL] > 250.0f && abs(gravx[(((y/sdl_scale)/CELL)*(XRES/CELL))+((x/sdl_scale)/CELL)]) + abs(gravy[(((y/sdl_scale)/CELL)*(XRES/CELL))+((x/sdl_scale)/CELL)]) > 50) + { + if (rand()%5 < 1) + { + int j; + part_change_type(i,x,y,PT_PLSM); + parts[i].life = rand()%150+50; + j = create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_NEUT); if (j != -1) parts[j].temp = 15000; + j = create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PHOT); if (j != -1) parts[j].temp = 15000; + j = create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_BRMT); if (j != -1) parts[j].temp = 15000; + j = create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_SING); if (j != -1) { parts[j].temp = 15000; parts[i].life = rand()%25+50; } + + parts[i].temp += 15000; + pv[y/CELL][x/CELL] += 300; + } + } return 0; } diff --git a/src/elements/co2.c b/src/elements/co2.c index 77a92b026..3f7328825 100644 --- a/src/elements/co2.c +++ b/src/elements/co2.c @@ -51,10 +51,11 @@ int update_CO2(UPDATE_FUNC_ARGS) { j = create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_NEUT); if (j != -1) parts[j].temp = 15000; j = create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_ELEC); if (j != -1) parts[j].temp = 15000; j = create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_O2); if (j != -1) parts[j].temp = 15000; - j = create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_SING); if (j != -1) { parts[j].temp = 15000; parts[i].life = rand()%100+450; } + if (rand()%1000 < 1) { j = create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_SING); if (j != -1) { parts[j].temp = 15000; parts[i].life = 3; } } parts[i].temp += 15000; pv[y/CELL][x/CELL] += 100; + return 1; } } return 0; diff --git a/src/elements/elec.c b/src/elements/elec.c index 9ee3876c3..919ee87c9 100644 --- a/src/elements/elec.c +++ b/src/elements/elec.c @@ -94,7 +94,7 @@ int update_ELEC(UPDATE_FUNC_ARGS) { kill_part(i); return 1; } - if (ptypes[r&0xFF].properties & PROP_CONDUCTS && ((r&0xFF)!=PT_H2||parts[i].temp<2273.15)) + 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); kill_part(i);