Fixed wall eraser errors and loading of other saves.

This commit is contained in:
Phil
2010-09-09 11:55:20 -04:00
parent 8e3383909b
commit 6d70d1fdee
2 changed files with 61 additions and 25 deletions

33
main.c
View File

@@ -101,6 +101,7 @@ int legacy_enable = 0; //Used to disable new features such as heat, will be set
int death = 0, framerender = 0; int death = 0, framerender = 0;
int amd = 1; int amd = 1;
int FPSB = 0; int FPSB = 0;
int cracker = 1;
sign signs[MAXSIGNS]; sign signs[MAXSIGNS];
@@ -465,7 +466,38 @@ int parse_save(void *save, int size, int replace, int x0, int y0)
for(x=bx0; x<bx0+bw; x++) for(x=bx0; x<bx0+bw; x++)
{ {
if(d[p]) if(d[p])
{
bmap[y][x] = d[p]; bmap[y][x] = d[p];
if(cracker)
{
if(bmap[y][x]==1)
bmap[y][x]=11;
else if(bmap[y][x]==2)
bmap[y][x]=9;
else if(bmap[y][x]==3)
bmap[y][x]=8;
else if(bmap[y][x]==4)
bmap[y][x]=7;
else if(bmap[y][x]==5)
bmap[y][x]=5;
else if(bmap[y][x]==6)
bmap[y][x]=4;
else if(bmap[y][x]==7)
bmap[y][x]=3;
else if(bmap[y][x]==8)
bmap[y][x]=2;
else if(bmap[y][x]==9)
bmap[y][x]=12;
else if(bmap[y][x]==10)
bmap[y][x]=13;
else if(bmap[y][x]==11)
bmap[y][x]=14;
else if(bmap[y][x]==12)
bmap[y][x]=15;
else if(bmap[y][x]==13)
bmap[y][x]=20;
}
}
p++; p++;
} }
for(y=by0; y<by0+bh; y++) for(y=by0; y<by0+bh; y++)
@@ -665,6 +697,7 @@ corrupt:
memset(signs, 0, sizeof(signs)); memset(signs, 0, sizeof(signs));
memset(parts, 0, sizeof(particle)*NPART); memset(parts, 0, sizeof(particle)*NPART);
memset(bmap, 0, sizeof(bmap)); memset(bmap, 0, sizeof(bmap));
} }
return 1; return 1;
} }

View File

@@ -1911,15 +1911,18 @@ player[23] = 1;
} }
if(t==PT_FWRK) if(t==PT_FWRK)
{ {
if(parts[i].temp>400&&10>rand()%10000&&parts[i].life==0&&!pmap[y-1][x]) if(parts[i].temp>400&&(9+parts[i].temp/40)>rand()%100000&&parts[i].life==0&&!pmap[y-1][x])
{ {
create_part(-1, x , y-1 , PT_FWRK); create_part(-1, x , y-1 , PT_FWRK);
r = pmap[y-1][x]; r = pmap[y-1][x];
parts[r>>8].vy = rand()%8-22; if(parts[r>>8].type==PT_FWRK)
parts[r>>8].vx = rand()%20-rand()%20; {
parts[r>>8].life=rand()%30+50; parts[r>>8].vy = rand()%8-22;
parts[i].type=PT_NONE; parts[r>>8].vx = rand()%20-rand()%20;
parts[r>>8].life=rand()%30+50;
parts[i].type=PT_NONE;
}
} }
if(parts[i].life>1) if(parts[i].life>1)
{ {
@@ -1939,6 +1942,8 @@ player[23] = 1;
{ {
if(5>=rand()%8) if(5>=rand()%8)
{ {
if(!pmap[y+ny][x+nx])
{
create_part(-1, x+nx, y+ny , PT_DUST); create_part(-1, x+nx, y+ny , PT_DUST);
pv[y/CELL][x/CELL] += 2.00f*CFDS; pv[y/CELL][x/CELL] += 2.00f*CFDS;
a= pmap[y+ny][x+nx]; a= pmap[y+ny][x+nx];
@@ -1952,6 +1957,7 @@ player[23] = 1;
parts[a>>8].ctype=e; parts[a>>8].ctype=e;
parts[a>>8].temp= rand()%20+600; parts[a>>8].temp= rand()%20+600;
} }
}
} }
} }
@@ -2180,7 +2186,7 @@ void update_particles(pixel *vid)
{ {
for(x=0; x<XRES/CELL; x++) for(x=0; x<XRES/CELL; x++)
{ {
if(bmap[y][x]==1) if(bmap[y][x]==11)
for(j=0; j<CELL; j++) for(j=0; j<CELL; j++)
for(i=0; i<CELL; i++) for(i=0; i<CELL; i++)
{ {
@@ -2189,14 +2195,14 @@ void update_particles(pixel *vid)
drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80); drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80);
} }
if(bmap[y][x]==2) if(bmap[y][x]==9)
for(j=0; j<CELL; j+=2) for(j=0; j<CELL; j+=2)
for(i=(j>>1)&1; i<CELL; i+=2) for(i=(j>>1)&1; i<CELL; i+=2)
{ {
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080);
drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80); drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80);
} }
if(bmap[y][x]==3) if(bmap[y][x]==8)
{ {
for(j=0; j<CELL; j++) for(j=0; j<CELL; j++)
for(i=0; i<CELL; i++) for(i=0; i<CELL; i++)
@@ -2226,7 +2232,7 @@ void update_particles(pixel *vid)
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x8080FF); vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x8080FF);
drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0xFF); drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0xFF);
} }
if(bmap[y][x]==6) if(bmap[y][x]==7)
{ {
for(j=0; j<CELL; j+=2) for(j=0; j<CELL; j+=2)
for(i=(j>>1)&1; i<CELL; i+=2) for(i=(j>>1)&1; i<CELL; i+=2)
@@ -2250,7 +2256,7 @@ void update_particles(pixel *vid)
fire_b[y][x] = cb; fire_b[y][x] = cb;
} }
} }
if(bmap[y][x]==7) if(bmap[y][x]==3)
{ {
if(emap[y][x]) if(emap[y][x])
{ {
@@ -2286,7 +2292,7 @@ void update_particles(pixel *vid)
} }
} }
} }
if(bmap[y][x]==8) if(bmap[y][x]==2)
{ {
for(j=0; j<CELL; j++) for(j=0; j<CELL; j++)
for(i=0; i<CELL; i++) for(i=0; i<CELL; i++)
@@ -2317,7 +2323,7 @@ void update_particles(pixel *vid)
fire_b[y][x] = cb; fire_b[y][x] = cb;
} }
} }
if(bmap[y][x]==11) if(bmap[y][x]==14)
{ {
for(j=0; j<CELL; j++) for(j=0; j<CELL; j++)
for(i=0; i<CELL; i++) for(i=0; i<CELL; i++)
@@ -2344,7 +2350,7 @@ void update_particles(pixel *vid)
fire_b[y][x] = cb; fire_b[y][x] = cb;
} }
} }
if(bmap[y][x]==13) if(bmap[y][x]==20)
{ {
for(j=0; j<CELL; j+=2) for(j=0; j<CELL; j+=2)
{ {
@@ -2355,7 +2361,7 @@ void update_particles(pixel *vid)
} }
} }
} }
if(bmap[y][x]==9) if(bmap[y][x]==12)
{ {
for(j=0; j<CELL; j+=2) for(j=0; j<CELL; j+=2)
{ {
@@ -2366,7 +2372,7 @@ void update_particles(pixel *vid)
} }
} }
} }
if(bmap[y][x]==10) if(bmap[y][x]==13)
{ {
for(j=0; j<CELL; j+=2) for(j=0; j<CELL; j+=2)
{ {
@@ -2377,7 +2383,7 @@ void update_particles(pixel *vid)
} }
} }
} }
if(bmap[y][x]==12) if(bmap[y][x]==15)
{ {
if(emap[y][x]) if(emap[y][x])
{ {
@@ -2878,21 +2884,18 @@ int create_parts(int x, int y, int r, int c)
{ {
i = ox; i = ox;
j = oy; j = oy;
for(q=122;q<141;q++) q = bmap[j][i]+120;
{
if(bmap[j][i]==q-120)
{ {
if(q==PSR) if(q==PSR)
{ {
bmap[j][i]=0; bmap[j][i]=0;
return 1; return 1;
}
} }
} }
return 1;
} }
} }
} }
return 1;
} }
else else
{ {
@@ -2915,7 +2918,7 @@ int create_parts(int x, int y, int r, int c)
{ {
i = ox; i = ox;
j = oy; j = oy;
if(b==4) if(b==7)
{ {
fvx[j][i] = 0.0f; fvx[j][i] = 0.0f;
fvy[j][i] = 0.0f; fvy[j][i] = 0.0f;