From 492125a67c569893e978c1ddf39c35132f41b2df Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Mon, 31 Dec 2018 17:32:55 +0100 Subject: [PATCH] Clean up Obj_Trap --- Source/objects.cpp | 119 +++++++++++++++++---------------------------- 1 file changed, 44 insertions(+), 75 deletions(-) diff --git a/Source/objects.cpp b/Source/objects.cpp index 38cf8cf1c..51ea7798c 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -2383,86 +2383,55 @@ void __fastcall Obj_FlameTrap(int i) void __fastcall Obj_Trap(int i) { - int edi1; // edi - int v2; // esi - int v3; // eax - int v4; // eax - int v5; // ebx - int v6; // ecx - int v7; // eax - int v8; // ecx - char *j; // edx - int v10; // eax - int v11; // [esp+8h] [ebp-1Ch] - int v12; // [esp+10h] [ebp-14h] - int sx; // [esp+14h] [ebp-10h] - int sy; // [esp+18h] [ebp-Ch] - int v15; // [esp+1Ch] [ebp-8h] - int v1; // [esp+20h] [ebp-4h] - - edi1 = i; - if (object[i]._oVar4) - return; - v2 = dObject[object[edi1]._oVar1][object[edi1]._oVar2] - 1; - v3 = object[v2]._otype; - if (v3 <= OBJ_L2RDOOR) { - if (v3 < OBJ_L2LDOOR) { - if (v3 <= 0) - return; - if (v3 > OBJ_L1RDOOR) { - if (v3 <= OBJ_SKFIRE || v3 > OBJ_CHEST3 && v3 != OBJ_SWITCHSKL) - return; - goto LABEL_9; - } + int oti, dir; + BOOL otrig; + int sx, sy, dx, dy, x, y; + + otrig = FALSE; + if (!object[i]._oVar4) { + oti = dObject[object[i]._oVar1][object[i]._oVar2] - 1; + switch (object[oti]._otype) { + case OBJ_L1LDOOR: + case OBJ_L1RDOOR: + case OBJ_L2LDOOR: + case OBJ_L2RDOOR: + case OBJ_L3LDOOR: + case OBJ_L3RDOOR: + if (object[oti]._oVar4) + otrig = TRUE; + break; + case OBJ_LEVER: + case OBJ_CHEST1: + case OBJ_CHEST2: + case OBJ_CHEST3: + case OBJ_SWITCHSKL: + case OBJ_SARC: + if (!object[oti]._oSelFlag) + otrig = TRUE; + break; } - LABEL_17: - if (!object[v2]._oVar4) - return; - goto LABEL_10; - } - if (v3 != OBJ_SARC) { - if (v3 <= OBJ_PEDISTAL || v3 > OBJ_L3RDOOR) - return; - goto LABEL_17; - } -LABEL_9: - if (object[v2]._oSelFlag) - return; -LABEL_10: - v4 = object[edi1]._ox; - object[edi1]._oVar4 = 1; - v5 = object[v2]._oy; - v6 = object[v2]._ox; - sx = v4; - sy = object[edi1]._oy; - v7 = v5 - 1; - v1 = object[v2]._ox; - v11 = v5 + 1; - if ((unsigned char)(__OFSUB__(v5 - 1, v5 + 1) ^ 1) | (v5 - 1 == v5 + 1)) { - v12 = v6 - 1; - v15 = v6 + 1; - do { - v8 = v12; - if (v12 <= v15) { - for (j = &dPlayer[v12][v7];; j += 112) { - if (*j) { - v1 = v8; - v5 = v7; + if (otrig) { + object[i]._oVar4 = 1; + sx = object[i]._ox; + sy = object[i]._oy; + dx = object[oti]._ox; + dy = object[oti]._oy; + for (y = dy - 1; y <= object[oti]._oy + 1; y++) { + for (x = object[oti]._ox - 1; x <= object[oti]._ox + 1; x++) { + if (dPlayer[x][y]) { + dx = x; + dy = y; } - if (++v8 > v15) - break; } } - ++v7; - } while (v7 <= v11); - v6 = v1; - } - if (!deltaload) { - v10 = GetDirection(sx, sy, v6, v5); - AddMissile(sx, sy, v1, v5, v10, object[edi1]._oVar3, 1, -1, 0, 0); - PlaySfxLoc(IS_TRAP, object[v2]._ox, object[v2]._oy); + if (!deltaload) { + dir = GetDirection(sx, sy, dx, dy); + AddMissile(sx, sy, dx, dy, dir, object[i]._oVar3, 1, -1, 0, 0); + PlaySfxLoc(IS_TRAP, object[oti]._ox, object[oti]._oy); + } + object[oti]._oTrapFlag = 0; + } } - object[v2]._oTrapFlag = 0; } // 676190: using guessed type int deltaload;