Browse Source

uShape

pull/100/head
galaxyhaxz 7 years ago committed by Anders Jenbo
parent
commit
486596dafa
  1. 135
      Source/drlg_l4.cpp

135
Source/drlg_l4.cpp

@ -1468,88 +1468,79 @@ void L4makeDungeon()
void uShape()
{
int v0; // ecx
signed int v1; // esi
signed int v2; // eax
char v3; // dl
int v4; // eax
signed int v5; // esi
int v6; // ecx
int v7; // ecx
int *v8; // esi
signed int v9; // eax
char v10; // dl
int v11; // eax
signed int v12; // esi
char *v13; // edx
v0 = 19;
do {
v1 = 19;
do {
v2 = v1;
v3 = dung[v1][v0];
if (v3 == 1 || (hallok[v0] = 0, v3 == 1)) {
hallok[v0] = dung[v2][v0 + 1] == 1 && !dung[v2 + 1][v0 + 1];
v1 = 0;
int j, i, rv;
for(j = 19; j >= 0; j--) {
for(i = 19; i >= 0; i--) {
if(dung[i][j] != 1) {
hallok[j] = FALSE;
}
--v1;
} while (v1 >= 0);
--v0;
} while (v0 >= 0);
v4 = random(0, 19) + 1;
do {
if (hallok[v4]) {
v5 = 19;
do {
v6 = v4 + 20 * v5;
if (dung[0][v6] == 1) {
v5 = -1;
v4 = 0;
if(dung[i][j] == 1) {
if(dung[i][j + 1] == 1 && dung[i + 1][j + 1] == 0) {
hallok[j] = TRUE;
} else {
dung[0][v6] = 1;
dung[0][v6 + 1] = 1;
hallok[j] = FALSE;
}
--v5;
} while (v5 >= 0);
} else if (++v4 == 20) {
v4 = 1;
i = 0;
}
}
} while (v4);
v7 = 380;
v8 = &hallok[19];
}
rv = random(0, 19) + 1;
do {
v9 = 19;
do {
v10 = dung[0][v7 + v9];
if (v10 == 1 || (*v8 = 0, v10 == 1)) {
*v8 = dung[1][v7 + v9] == 1 && !dung[1][v7 + 1 + v9];
v9 = 0;
if(hallok[rv]) {
for(i = 19; i >= 0; i--) {
if(dung[i][rv] == 1) {
i = -1;
rv = 0;
} else {
dung[i][rv] = 1;
dung[i][rv + 1] = 1;
}
}
--v9;
} while (v9 >= 0);
--v8;
v7 -= 20;
} while ((signed int)v8 >= (signed int)hallok);
v11 = random(0, 19) + 1;
} else {
rv++;
if(rv == 20) {
rv = 1;
}
}
} while(rv != 0);
for(i = 19; i >= 0; i--) {
for(j = 19; j >= 0; j--) {
if(dung[i][j] != 1) {
hallok[i] = FALSE;
}
if(dung[i][j] == 1) {
if(dung[i + 1][j] == 1 && dung[i + 1][j + 1] == 0) {
hallok[i] = TRUE;
} else {
hallok[i] = FALSE;
}
j = 0;
}
}
}
rv = random(0, 19) + 1;
do {
if (hallok[v11]) {
v12 = 19;
do {
v13 = (char *)&dung[v11][v12];
if (*v13 == 1) {
v12 = -1;
v11 = 0;
if(hallok[rv]) {
for(j = 19; j >= 0; j--) {
if(dung[rv][j] == 1) {
j = -1;
rv = 0;
} else {
*v13 = 1;
dung[v11 + 1][v12] = 1;
dung[rv][j] = 1;
dung[rv + 1][j] = 1;
}
--v12;
} while (v12 >= 0);
} else if (++v11 == 20) {
v11 = 1;
}
} else {
rv++;
if(rv == 20) {
rv = 1;
}
}
} while (v11);
} while(rv != 0);
}
long GetArea()

Loading…
Cancel
Save