From 486596dafafae2dbd3bd06aae439eddeb92f660c Mon Sep 17 00:00:00 2001 From: galaxyhaxz Date: Sun, 5 May 2019 02:50:18 -0500 Subject: [PATCH] uShape --- Source/drlg_l4.cpp | 135 +++++++++++++++++++++------------------------ 1 file changed, 63 insertions(+), 72 deletions(-) diff --git a/Source/drlg_l4.cpp b/Source/drlg_l4.cpp index dd0ccdd24..ff6f3074f 100644 --- a/Source/drlg_l4.cpp +++ b/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()