Browse Source

Clean up TakePlrsMoney

pull/93/head
Anders Jenbo 7 years ago
parent
commit
1e37dbe89e
  1. 168
      Source/stores.cpp

168
Source/stores.cpp

@ -2002,139 +2002,69 @@ void SetSpdbarGoldCurs(int pnum, int i)
void TakePlrsMoney(int cost)
{
int v1; // edi
int v2; // eax
int v3; // esi
int v4; // ebx
int v5; // eax
_DWORD *v6; // ecx
int v7; // eax
int v8; // ebx
int v9; // eax
_DWORD *v10; // ecx
int v11; // eax
signed int v12; // ebx
int v13; // eax
int v14; // eax
_DWORD *v15; // ecx
int v16; // eax
signed int v17; // ebx
int v18; // eax
int v19; // eax
_DWORD *v20; // ecx
int v21; // eax
v1 = cost;
v2 = CalculateGold(myplr);
v3 = myplr;
v4 = 0;
plr[myplr]._pGold = v2 - v1;
while (v1 > 0) {
v5 = 368 * v4 + 21720 * v3;
if (*(int *)((char *)&plr[0].SpdList[0]._itype + v5) == ITYPE_GOLD) {
v6 = (unsigned int *)((char *)&plr[0].SpdList[0]._ivalue + v5);
v7 = *(int *)((char *)&plr[0].SpdList[0]._ivalue + v5);
if (v7 != 5000) {
if (v1 >= v7) {
v1 -= v7;
RemoveSpdBarItem(v3, v4);
v3 = myplr;
v4 = -1;
} else {
*v6 = v7 - v1;
SetSpdbarGoldCurs(v3, v4);
v1 = 0;
}
int i;
plr[myplr]._pGold = CalculateGold(myplr) - cost;
for (i = 0; i < MAXBELTITEMS && cost > 0; i++) {
if (plr[myplr].SpdList[i]._itype == ITYPE_GOLD && plr[myplr].SpdList[i]._ivalue != 5000) {
if (cost < plr[myplr].SpdList[i]._ivalue) {
plr[myplr].SpdList[i]._ivalue -= cost;
SetSpdbarGoldCurs(myplr, i);
cost = 0;
} else {
cost -= plr[myplr].SpdList[i]._ivalue;
RemoveSpdBarItem(myplr, i);
i = -1;
}
}
if (++v4 >= MAXBELTITEMS) {
if (v1 > 0) {
v8 = 0;
do {
if (v1 <= 0)
break;
v9 = 368 * v8 + 21720 * v3;
if (*(int *)((char *)&plr[0].SpdList[0]._itype + v9) == ITYPE_GOLD) {
v10 = (unsigned int *)((char *)&plr[0].SpdList[0]._ivalue + v9);
v11 = *(int *)((char *)&plr[0].SpdList[0]._ivalue + v9);
if (v1 >= v11) {
v1 -= v11;
RemoveSpdBarItem(v3, v8);
v3 = myplr;
v8 = -1;
} else {
*v10 = v11 - v1;
SetSpdbarGoldCurs(v3, v8);
v1 = 0;
}
}
++v8;
} while (v8 < MAXBELTITEMS);
}
if (cost > 0) {
for (i = 0; i < MAXBELTITEMS && cost > 0; i++) {
if (plr[myplr].SpdList[i]._itype == ITYPE_GOLD) {
if (cost < plr[myplr].SpdList[i]._ivalue) {
plr[myplr].SpdList[i]._ivalue -= cost;
SetSpdbarGoldCurs(myplr, i);
cost = 0;
} else {
cost -= plr[myplr].SpdList[i]._ivalue;
RemoveSpdBarItem(myplr, i);
i = -1;
}
}
break;
}
}
v12 = 0;
drawpanflag = 255;
if (v1 > 0) {
v13 = 21720 * v3;
if (plr[v3]._pNumInv <= 0) {
LABEL_26:
v17 = 0;
if (v1 > 0) {
v18 = 21720 * v3;
if (plr[v3]._pNumInv > 0) {
do {
if (v1 <= 0)
break;
v19 = 368 * v17 + v18;
if (*(int *)((char *)&plr[0].InvList[0]._itype + v19) == ITYPE_GOLD) {
v20 = (unsigned int *)((char *)&plr[0].InvList[0]._ivalue + v19);
v21 = *(int *)((char *)&plr[0].InvList[0]._ivalue + v19);
if (v1 >= v21) {
v1 -= v21;
RemoveInvItem(v3, v17);
v3 = myplr;
v17 = -1;
} else {
*v20 = v21 - v1;
SetGoldCurs(v3, v17);
v1 = 0;
}
}
++v17;
v18 = 21720 * v3;
} while (v17 < plr[v3]._pNumInv);
if (cost > 0) {
for (i = 0; i < plr[myplr]._pNumInv && cost > 0; i++) {
if (plr[myplr].InvList[i]._itype == ITYPE_GOLD && plr[myplr].InvList[i]._ivalue != 5000) {
if (cost < plr[myplr].InvList[i]._ivalue) {
plr[myplr].InvList[i]._ivalue -= cost;
SetGoldCurs(myplr, i);
cost = 0;
} else {
cost -= plr[myplr].InvList[i]._ivalue;
RemoveInvItem(myplr, i);
i = -1;
}
}
} else {
while (v1 > 0) {
v14 = 368 * v12 + v13;
if (*(int *)((char *)&plr[0].InvList[0]._itype + v14) == ITYPE_GOLD) {
v15 = (unsigned int *)((char *)&plr[0].InvList[0]._ivalue + v14);
v16 = *(int *)((char *)&plr[0].InvList[0]._ivalue + v14);
if (v16 != 5000) {
if (v1 >= v16) {
v1 -= v16;
RemoveInvItem(v3, v12);
v3 = myplr;
v12 = -1;
} else {
*v15 = v16 - v1;
SetGoldCurs(v3, v12);
v1 = 0;
}
}
if (cost > 0) {
for (i = 0; i < plr[myplr]._pNumInv && cost > 0; i++) {
if (plr[myplr].InvList[i]._itype == ITYPE_GOLD) {
if (cost < plr[myplr].InvList[i]._ivalue) {
plr[myplr].InvList[i]._ivalue -= cost;
SetGoldCurs(myplr, i);
cost = 0;
} else {
cost -= plr[myplr].InvList[i]._ivalue;
RemoveInvItem(myplr, i);
i = -1;
}
}
++v12;
v13 = 21720 * v3;
if (v12 >= plr[v3]._pNumInv)
goto LABEL_26;
}
}
}
}
// 52571C: using guessed type int drawpanflag;
void SmithBuyItem()
{

Loading…
Cancel
Save