Browse Source

Clean up GoldAutoPlace

pull/88/head
Anders Jenbo 7 years ago
parent
commit
c0085bdb95
  1. 157
      Source/inv.cpp
  2. 2
      Source/inv.h

157
Source/inv.cpp

@ -650,112 +650,69 @@ LABEL_24:
return v6;
}
int GoldAutoPlace(int pnum)
BOOL GoldAutoPlace(int pnum)
{
int v1; // ebp
int v2; // edi
int v3; // ecx
int *v4; // esi
int v5; // eax
int v6; // edi
int *v7; // esi
int v8; // eax
signed int v9; // ebx
char *v10; // edx
int v11; // eax
int v12; // ecx
int pnuma; // [esp+10h] [ebp-4h]
pnuma = pnum;
v1 = pnum;
v2 = 0;
v3 = 0;
if (plr[v1]._pNumInv <= 0) {
LABEL_14:
v6 = 0;
if (plr[v1]._pNumInv <= 0) {
LABEL_28:
v9 = 39;
do {
if (v3)
break;
v10 = &plr[0].InvGrid[10 * (v9 / 10) + v1 * 21720 + v9 % 10];
if (!*v10) {
v11 = v1 * 21720 + 368 * plr[v1]._pNumInv;
qmemcpy((char *)plr[0].InvList + v11, &plr[v1].HoldItem, 0x170u);
++plr[v1]._pNumInv;
*v10 = plr[v1]._pNumInv;
v12 = plr[v1].HoldItem._ivalue;
if (v12 < 2500) {
if (v12 > 1000)
*(int *)((char *)&plr[0].InvList[0]._iCurs + v11) = 5;
else
*(int *)((char *)&plr[0].InvList[0]._iCurs + v11) = 4;
} else {
*(int *)((char *)&plr[0].InvList[0]._iCurs + v11) = 6;
}
plr[v1]._pGold = CalculateGold(pnuma);
v3 = 1;
}
--v9;
} while (v9 >= 0);
} else {
v7 = &plr[v1].InvList[0]._ivalue;
while (!v3) {
if (*(v7 - 47) == 11 && *v7 < 5000) {
v8 = plr[v1].HoldItem._ivalue + *v7;
if (v8 <= 5000) {
*v7 = v8;
if (v8 < 2500) {
if (v8 > 1000)
*(v7 - 1) = 5;
else
*(v7 - 1) = 4;
} else {
*(v7 - 1) = 6;
}
plr[v1]._pGold = CalculateGold(pnuma);
v3 = 1;
}
}
++v6;
v7 += 92;
if (v6 >= plr[v1]._pNumInv) {
if (v3)
return v3;
goto LABEL_28;
}
BOOL done;
int i, ii;
int xx, yy;
done = FALSE;
for (i = 0; i < plr[pnum]._pNumInv && !done; i++) {
if (plr[pnum].InvList[i]._itype == ITYPE_GOLD) {
if (plr[pnum].HoldItem._ivalue + plr[pnum].InvList[i]._ivalue <= 5000) {
plr[pnum].InvList[i]._ivalue = plr[pnum].HoldItem._ivalue + plr[pnum].InvList[i]._ivalue;
if (plr[pnum].InvList[i]._ivalue >= 2500)
plr[pnum].InvList[i]._iCurs = ICURS_GOLD_LARGE;
else if (plr[pnum].InvList[i]._ivalue <= 1000)
plr[pnum].InvList[i]._iCurs = ICURS_GOLD_SMALL;
else
plr[pnum].InvList[i]._iCurs = ICURS_GOLD_MEDIUM;
plr[pnum]._pGold = CalculateGold(pnum);
done = TRUE;
}
}
} else {
v4 = &plr[v1].InvList[0]._ivalue;
while (!v3) {
if (*(v4 - 47) == 11) {
v5 = *v4 + plr[v1].HoldItem._ivalue;
if (v5 <= 5000) {
*v4 = v5;
if (v5 < 2500) {
if (v5 > 1000)
*(v4 - 1) = 5;
else
*(v4 - 1) = 4;
} else {
*(v4 - 1) = 6;
}
plr[v1]._pGold = CalculateGold(pnuma);
v3 = 1;
}
}
++v2;
v4 += 92;
if (v2 >= plr[v1]._pNumInv) {
if (v3)
return v3;
goto LABEL_14;
}
if (done)
return done;
for (i = 0; i < plr[pnum]._pNumInv && !done; i++) {
if (plr[pnum].InvList[i]._itype == ITYPE_GOLD && plr[pnum].InvList[i]._ivalue < 5000) {
if (plr[pnum].HoldItem._ivalue + plr[pnum].InvList[i]._ivalue <= 5000) {
plr[pnum].InvList[i]._ivalue = plr[pnum].HoldItem._ivalue + plr[pnum].InvList[i]._ivalue;
if (plr[pnum].InvList[i]._ivalue >= 2500)
plr[pnum].InvList[i]._iCurs = ICURS_GOLD_LARGE;
else if (plr[pnum].InvList[i]._ivalue <= 1000)
plr[pnum].InvList[i]._iCurs = ICURS_GOLD_SMALL;
else
plr[pnum].InvList[i]._iCurs = ICURS_GOLD_MEDIUM;
plr[pnum]._pGold = CalculateGold(pnum);
done = TRUE;
}
}
}
return v3;
if (done)
return done;
for (i = 39; i >= 0 && !done; i--) {
yy = 10 * (i / 10);
xx = i % 10;
if (!plr[pnum].InvGrid[xx + yy]) {
ii = plr[pnum]._pNumInv;
plr[pnum].InvList[ii] = plr[pnum].HoldItem;
plr[pnum]._pNumInv = plr[pnum]._pNumInv + 1;
plr[pnum].InvGrid[xx + yy] = plr[pnum]._pNumInv;
if (plr[pnum].HoldItem._ivalue >= 2500)
plr[pnum].InvList[ii]._iCurs = ICURS_GOLD_LARGE;
else if (plr[pnum].HoldItem._ivalue <= 1000)
plr[pnum].InvList[ii]._iCurs = ICURS_GOLD_SMALL;
else
plr[pnum].InvList[ii]._iCurs = ICURS_GOLD_MEDIUM;
plr[pnum]._pGold = CalculateGold(pnum);
done = TRUE;
}
}
return done;
}
int WeaponAutoPlace(int pnum)

2
Source/inv.h

@ -12,7 +12,7 @@ void DrawInv();
void DrawInvBelt();
int AutoPlace(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);
BOOL GoldAutoPlace(int pnum);
int WeaponAutoPlace(int pnum);
int SwapItem(ItemStruct *a, ItemStruct *b);
void CheckInvPaste(int pnum, int mx, int my);

Loading…
Cancel
Save