diff --git a/Source/objects.cpp b/Source/objects.cpp index b63f8dbfe..e0d6af7d4 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -468,45 +468,27 @@ void __fastcall InitRndLocObj(int min, int max, int objtype) void __fastcall InitRndLocBigObj(int min, int max, int objtype) { - int i, numobjs, xp, yp, xpm1, xpp1, ypm2, ypm1, ypp1; + int i, xp, yp, numobjs; - numobjs = min + random(140, max - min); - i = 0; - if (numobjs > 0) { - for (;;) { - do { - xp = random(140, 80) + 16; - yp = random(140, 80) + 16; - xpm1 = xp - 1; - ypm2 = yp - 2; - } while (!RndLocOk(xpm1, ypm2)); - if (RndLocOk(xp, ypm2)) { - xpp1 = xp + 1; - if (RndLocOk(xpp1, ypm2)) { - ypm1 = yp - 1; - if (RndLocOk(xpm1, ypm1)) { - if (RndLocOk(xp, ypm1)) { - if (RndLocOk(xpp1, ypm1)) { - if (RndLocOk(xpm1, yp)) { - if (RndLocOk(xp, yp)) { - if (RndLocOk(xpp1, yp)) { - ypp1 = yp + 1; - if (RndLocOk(xpm1, ypp1)) { - if (RndLocOk(xp, ypp1)) { - if (RndLocOk(xpp1, ypp1)) { - AddObject(objtype, xp, yp); - if (++i >= numobjs) - break; - } - } - } - } - } - } - } - } - } - } + numobjs = random(140, max - min) + min; + for (i = 0; i < numobjs; i++) { + while (1) { + xp = random(140, 80) + 16; + yp = random(140, 80) + 16; + if (RndLocOk(xp - 1, yp - 2) + && RndLocOk(xp, yp - 2) + && RndLocOk(xp + 1, yp - 2) + && RndLocOk(xp - 1, yp - 1) + && RndLocOk(xp, yp - 1) + && RndLocOk(xp + 1, yp - 1) + && RndLocOk(xp - 1, yp) + && RndLocOk(xp, yp) + && RndLocOk(xp + 1, yp) + && RndLocOk(xp - 1, yp + 1) + && RndLocOk(xp, yp + 1) + && RndLocOk(xp + 1, yp + 1)) { + AddObject(objtype, xp, yp); + break; } } }