diff --git a/Source/objects.cpp b/Source/objects.cpp index 865925dba..7ed06f97e 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -527,50 +527,29 @@ void __fastcall InitRndLocBigObj(int min, int max, int objtype) void __fastcall InitRndLocObj5x5(int min, int max, int objtype) { - int v3; // esi - int v4; // edx - int v6; // ebx - int v7; // eax - int v9; // edi - int v10; // esi - int v11; // edx - signed int v12; // [esp+Ch] [ebp-14h] - int v13; // [esp+10h] [ebp-10h] - int v14; // [esp+14h] [ebp-Ch] - signed int v15; // [esp+18h] [ebp-8h] - signed int v16; // [esp+1Ch] [ebp-4h] - - v3 = min; - v4 = max - min; - v13 = 0; - v6 = v3 + random(139, v4); - if (v6 > 0) { - do { - v14 = 0; - while (1) { - v12 = 1; - v7 = random(139, 80); - v9 = v7 + 16; - v15 = -2; - v10 = random(139, 80) + 16; - do { - v16 = -2; - v11 = v15 + v10; - do { - if (!RndLocOk(v16 + v9, v11)) - v12 = 0; - ++v16; - } while (v16 <= 2); - ++v15; - } while (v15 <= 2); - if (v12) - break; - if (++v14 > 20000) - return; + BOOL exit; + int xp, yp, numobjs, i, k, m, n; + + numobjs = min + random(139, max - min); + for (i = 0; i < numobjs; i++) { + k = 0; + for (;;) { + exit = TRUE; + xp = random(139, 80) + 16; + yp = random(139, 80) + 16; + for (n = -2; n <= 2; n++) { + for (m = -2; m <= 2; m++) { + if (!RndLocOk(xp + m, yp + n)) + exit = FALSE; + } } - AddObject(objtype, v9, v10); - ++v13; - } while (v13 < v6); + if (exit) + break; + k++; + if (k > 20000) + return; + } + AddObject(objtype, xp, yp); } }