Browse Source

OperateChest bin exact

pull/88/head
qndel 7 years ago committed by Anders Jenbo
parent
commit
3babd841ac
  1. 89
      Source/objects.cpp

89
Source/objects.cpp

@ -3155,74 +3155,45 @@ void OperateSChambBk(int pnum, int i)
void OperateChest(int pnum, int i, unsigned char sendmsg)
{
int v3; // esi
BOOLEAN v4; // zf
int v5; // edi
int v6; // eax
int v7; // eax
int v8; // ecx
int v9; // ecx
int v10; // ecx
signed int v11; // [esp-8h] [ebp-18h]
short param2; // [esp+8h] [ebp-8h]
int param1; // [esp+Ch] [ebp-4h]
int j, mdir, mtype;
param2 = i;
v3 = i;
param1 = pnum;
if (object[i]._oSelFlag) {
if (!deltaload)
PlaySfxLoc(IS_CHEST, object[v3]._ox, object[v3]._oy);
object[v3]._oAnimFrame += 2;
v4 = deltaload == 0;
object[v3]._oSelFlag = 0;
if (v4) {
SetRndSeed(object[v3]._oRndSeed);
v5 = 0;
PlaySfxLoc(IS_CHEST, object[i]._ox, object[i]._oy);
object[i]._oAnimFrame += 2;
object[i]._oSelFlag = 0;
if (!deltaload) {
SetRndSeed(object[i]._oRndSeed);
if (setlevel) {
if (object[v3]._oVar1 > 0) {
do {
CreateRndItem(object[v3]._ox, object[v3]._oy, 1u, sendmsg, 0);
++v5;
} while (v5 < object[v3]._oVar1);
for (j = 0; j < object[i]._oVar1; j++) {
CreateRndItem(object[i]._ox, object[i]._oy, 1u, sendmsg, 0);
}
} else if (object[v3]._oVar1 > 0) {
do {
if (object[v3]._oVar2)
CreateRndItem(object[v3]._ox, object[v3]._oy, 0, sendmsg, 0);
} else {
for (j = 0; j < object[i]._oVar1; j++) {
if (object[i]._oVar2)
CreateRndItem(object[i]._ox, object[i]._oy, 0, sendmsg, 0);
else
CreateRndUseful(param1, object[v3]._ox, object[v3]._oy, sendmsg);
++v5;
} while (v5 < object[v3]._oVar1);
CreateRndUseful(pnum, object[i]._ox, object[i]._oy, sendmsg);
}
}
if (!object[v3]._oTrapFlag)
goto LABEL_26;
v6 = object[v3]._otype;
if (v6 < OBJ_TCHEST1 || v6 > OBJ_TCHEST3)
goto LABEL_26;
v7 = GetDirection(object[v3]._ox, object[v3]._oy, plr[param1].WorldX, plr[param1].WorldY);
v8 = object[v3]._oVar4;
if (v8) {
v9 = v8 - 1;
if (v9) {
if (v9 != 1) {
v10 = sendmsg;
goto LABEL_25;
}
v11 = MIS_NOVA;
} else {
v11 = MIS_FARROW;
if (object[i]._oTrapFlag && object[i]._otype >= OBJ_TCHEST1 && object[i]._otype <= OBJ_TCHEST3) {
mdir = GetDirection(object[i]._ox, object[i]._oy, plr[pnum].WorldX, plr[pnum].WorldY);
switch (object[i]._oVar4) {
case 0:
mtype = MIS_ARROW;
break;
case 1:
mtype=MIS_FARROW;
break;
case 2:
mtype = MIS_NOVA;
break;
}
v10 = v11;
} else {
v10 = MIS_ARROW;
AddMissile(object[i]._ox, object[i]._oy, plr[pnum].WorldX, plr[pnum].WorldY, mdir, mtype, 1, -1, 0, 0);
object[i]._oTrapFlag = FALSE;
}
LABEL_25:
AddMissile(object[v3]._ox, object[v3]._oy, plr[param1].WorldX, plr[param1].WorldY, v7, v10, 1, -1, 0, 0);
object[v3]._oTrapFlag = FALSE;
LABEL_26:
if (param1 == myplr)
NetSendCmdParam2(FALSE, CMD_PLROPOBJ, param1, param2);
if (pnum == myplr)
NetSendCmdParam2(FALSE, CMD_PLROPOBJ, pnum, i);
return;
}
}

Loading…
Cancel
Save