|
|
|
|
@ -481,31 +481,32 @@ void __fastcall InitRndLocObj(int min, int max, int objtype)
|
|
|
|
|
|
|
|
|
|
void __fastcall InitRndLocBigObj(int min, int max, int objtype) |
|
|
|
|
{ |
|
|
|
|
int xp; // edi
|
|
|
|
|
int yp; // esi
|
|
|
|
|
int numobjs; // [esp+4h] [ebp-8h]
|
|
|
|
|
int i; // [esp+8h] [ebp-4h]
|
|
|
|
|
int i, numobjs, xp, yp, xpm1, xpp1, ypm2, ypm1, ypp1; |
|
|
|
|
|
|
|
|
|
i = 0; |
|
|
|
|
numobjs = min + random(140, max - min); |
|
|
|
|
i = 0; |
|
|
|
|
if (numobjs > 0) { |
|
|
|
|
while (1) { |
|
|
|
|
for (;;){ |
|
|
|
|
do { |
|
|
|
|
xp = random(140, 80) + 16; |
|
|
|
|
yp = random(140, 80) + 16; |
|
|
|
|
} while (!RndLocOk(xp - 1, yp - 2)); |
|
|
|
|
if (RndLocOk(xp, yp - 2)) { |
|
|
|
|
if (RndLocOk(xp + 1, yp - 2)) /* check */ |
|
|
|
|
{ |
|
|
|
|
if (RndLocOk(xp - 1, yp - 1)) { |
|
|
|
|
if (RndLocOk(xp, yp - 1)) { |
|
|
|
|
if (RndLocOk(xp + 1, yp - 1)) { |
|
|
|
|
if (RndLocOk(xp - 1, yp)) { |
|
|
|
|
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(xp + 1, yp)) { |
|
|
|
|
if (RndLocOk(xp - 1, yp + 1)) { |
|
|
|
|
if (RndLocOk(xp, yp + 1)) { |
|
|
|
|
if (RndLocOk(xp + 1, yp + 1)) { |
|
|
|
|
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; |
|
|
|
|
|