Browse Source

AutoPlace bin exact (#924)

pull/88/head
Robin Eklind 7 years ago committed by Anders Jenbo
parent
commit
3e09e6d70e
  1. 121
      Source/inv.cpp
  2. 2
      Source/inv.h

121
Source/inv.cpp

@ -463,90 +463,59 @@ void DrawInvBelt()
// 4B8960: using guessed type int talkflag; // 4B8960: using guessed type int talkflag;
// 4B8CB8: using guessed type char pcursinvitem; // 4B8CB8: using guessed type char pcursinvitem;
int AutoPlace(int pnum, int ii, int sx, int sy, int saveflag) BOOL AutoPlace(int pnum, int ii, int sx, int sy, int saveflag)
{ {
__int64 v5; // rax int i, j, xx, yy;
int v6; // ebx BOOL done;
signed int v7; // edx
signed int v8; // eax
signed int v9; // esi
int j; // edi
int v11; // eax
signed int v12; // esi
signed int v13; // ecx
int v14; // edi
char *v15; // ecx
char v16; // dl
signed int v18; // [esp+Ch] [ebp-Ch]
int p; // [esp+10h] [ebp-8h]
int v20; // [esp+14h] [ebp-4h]
int i; // [esp+14h] [ebp-4h]
p = pnum; done = TRUE;
v5 = ii; yy = 10 * (ii / 10);
v6 = 1; if (yy < 0) {
v18 = v5 % 10; yy = 0;
v7 = 10 * (unsigned __int64)(v5 / 10); }
v8 = v7; for (j = 0; j < sy && done; j++) {
if (v7 < 0) if (yy >= 40) {
v8 = 0; done = FALSE;
v20 = 0; }
if (sy <= 0) { xx = ii % 10;
LABEL_16: if (xx < 0) {
if (saveflag) { xx = 0;
v11 = pnum; }
qmemcpy( for (i = 0; i < sx && done; i++) {
&plr[pnum].InvList[plr[pnum]._pNumInv], if (xx < 10) {
&plr[pnum].HoldItem, done = plr[pnum].InvGrid[xx + yy] == 0;
sizeof(plr[pnum].InvList[plr[pnum]._pNumInv])); } else {
++plr[v11]._pNumInv; done = FALSE;
v12 = v7;
if (v7 < 0)
v12 = 0;
for (i = 0; i < sy; ++i) {
v13 = v18;
if (v18 < 0)
v13 = 0;
v14 = 0;
if (sx > 0) {
v15 = &plr[v11].InvGrid[v13 + v12];
do {
if (v14 || i != sy - 1)
v16 = -_LOBYTE(plr[v11]._pNumInv);
else
v16 = plr[v11]._pNumInv;
*v15++ = v16;
++v14;
} while (v14 < sx);
}
v12 += 10;
} }
CalcPlrScrolls(p); xx++;
} }
} else { yy += 10;
while (v6) { }
if (v8 >= 40) if (done && saveflag) {
v6 = 0; plr[pnum].InvList[plr[pnum]._pNumInv] = plr[pnum].HoldItem;
v9 = v18; plr[pnum]._pNumInv++;
if (v18 < 0) yy = 10 * (ii / 10);
v9 = 0; if (yy < 0) {
for (j = 0; j < sx; ++j) { yy = 0;
if (!v6) }
break; for (j = 0; j < sy; j++) {
v6 = 0; xx = ii % 10;
if (v9 < 10) if (xx < 0) {
_LOBYTE(v6) = plr[pnum].InvGrid[v9 + v8] == 0; xx = 0;
++v9;
} }
v8 += 10; for (i = 0; i < sx; i++) {
if (++v20 >= sy) { if (i != 0 || j != sy - 1) {
if (!v6) plr[pnum].InvGrid[xx + yy] = -plr[pnum]._pNumInv;
return v6; } else {
goto LABEL_16; plr[pnum].InvGrid[xx + yy] = plr[pnum]._pNumInv;
}
xx++;
} }
yy += 10;
} }
CalcPlrScrolls(pnum);
} }
return v6; return done;
} }
int SpecialAutoPlace(int pnum, int ii, int sx, int sy, int saveflag) int SpecialAutoPlace(int pnum, int ii, int sx, int sy, int saveflag)

2
Source/inv.h

@ -10,7 +10,7 @@ void InitInv();
void InvDrawSlotBack(int X, int Y, int W, int H); void InvDrawSlotBack(int X, int Y, int W, int H);
void DrawInv(); void DrawInv();
void DrawInvBelt(); void DrawInvBelt();
int AutoPlace(int pnum, int ii, int sx, int sy, int saveflag); BOOL AutoPlace(int pnum, int ii, int sx, int sy, int saveflag);
int SpecialAutoPlace(int pnum, int ii, int sx, int sy, int saveflag); int SpecialAutoPlace(int pnum, int ii, int sx, int sy, int saveflag);
int GoldAutoPlace(int pnum); int GoldAutoPlace(int pnum);
int WeaponAutoPlace(int pnum); int WeaponAutoPlace(int pnum);

Loading…
Cancel
Save