Browse Source

Merge pull request #948 from Predelnik/InitRndBarrels

InitRndBarrels (bin exact)
pull/88/head
Robin Eklind 7 years ago committed by GitHub
parent
commit
97f5f8fd77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 84
      Source/objects.cpp

84
Source/objects.cpp

@ -612,52 +612,48 @@ void AddBookLever(int lx1, int ly1, int lx2, int ly2, int x1, int y1, int x2, in
void InitRndBarrels() void InitRndBarrels()
{ {
int v0; // ebp int numobjs; // number of groups of barrels to generate
int v1; // esi int xp, yp;
int v2; // edi _object_id o;
int v3; // eax BOOL found;
BOOLEAN v4; // ebx int p; // regulates chance to stop placing barrels in current group
int v5; // edx int dir;
int v6; // eax int t; // number of tries of placing next barrel in current group
int v7; // eax int c; // number of barrels in current group
signed int v8; // [esp+4h] [ebp-Ch] int i;
signed int v9; // [esp+8h] [ebp-8h]
int v10; // [esp+Ch] [ebp-4h] numobjs = random(143, 5) + 3;
for (i = 0; i < numobjs; i++) {
v10 = 0;
v0 = random(143, 5) + 3;
if (v0 > 0) {
do { do {
do { xp = random(143, 80) + 16;
v1 = random(143, 80) + 16; yp = random(143, 80) + 16;
v2 = random(143, 80) + 16; } while (!RndLocOk(xp, yp));
} while (!RndLocOk(v1, v2)); o = (random(143, 4) != 0) ? OBJ_BARREL : OBJ_BARRELEX;
v3 = random(143, 4); AddObject(o, xp, yp);
AddObject(OBJ_BARRELEX - (v3 != 0), v1, v2); found = TRUE;
v4 = 1; p = 0;
v5 = 0; c = 1;
v9 = 1; while (random(143, p) == 0 && found) {
while (!random(143, v5) && v4) { t = 0;
v8 = 0; found = FALSE;
v4 = 0; while (TRUE) {
do { if (t >= 3)
if (v8 >= 3) break;
break; dir = random(143, 8);
v6 = random(143, 8); xp += bxadd[dir];
v1 += bxadd[v6]; yp += byadd[dir];
v2 += byadd[v6]; found = RndLocOk(xp, yp);
++v8; t++;
v4 = RndLocOk(v1, v2); if (found)
} while (!v4); break;
if (v4) {
v7 = random(143, 5);
AddObject(OBJ_BARRELEX - (v7 != 0), v1, v2);
++v9;
}
v5 = v9 >> 1;
} }
++v10; if (found) {
} while (v10 < v0); o = (random(143, 5) != 0) ? OBJ_BARREL : OBJ_BARRELEX;
AddObject(o, xp, yp);
c++;
}
p = c >> 1;
}
} }
} }

Loading…
Cancel
Save