From 5794c40f276e8bbed569a07a04361e1dc4239133 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Thu, 11 Apr 2019 03:38:33 +0200 Subject: [PATCH] Clean up ForceL4Trig --- Source/trigs.cpp | 181 +++++++++++++---------------------------------- Source/trigs.h | 2 +- 2 files changed, 51 insertions(+), 132 deletions(-) diff --git a/Source/trigs.cpp b/Source/trigs.cpp index a424c9aa1..280639e03 100644 --- a/Source/trigs.cpp +++ b/Source/trigs.cpp @@ -624,152 +624,71 @@ BOOL ForceL3Trig() return FALSE; } -unsigned char ForceL4Trig() +BOOL ForceL4Trig() { - int *v0; // eax - int *v1; // esi - int v2; // eax - int *v3; // ecx - int *v4; // eax - int *v5; // esi - int *v6; // ecx - int *v7; // eax - int *v8; // ebp - int v9; // edi - TriggerStruct *v10; // esi - int v11; // ebx - int v12; // eax - int *v13; // eax - int *v14; // esi - int *v15; // edx - int v16; // edi - int v17; // eax - int v18; // eax - int v19; // ecx - - if (L4UpList[0] != -1) { - v0 = L4UpList; - v1 = L4UpList; - while (1) { - if (dPiece[cursmx][cursmy] == *v0) { - sprintf(infostr, "Up to level %i", currlevel - 1); - v2 = 0; - if (trigflag[4] > 0) - break; + int i, j, dx, dy; + + for (i = 0; L4UpList[i] != -1; ++i) { + if (dPiece[cursmx][cursmy] == L4UpList[i]) { + sprintf(infostr, "Up to level %i", currlevel - 1); + for (j = 0; j < trigflag[4]; j++) { + if (trigs[j]._tmsg == WM_DIABPREVLVL) { + cursmx = trigs[j]._tx; + cursmy = trigs[j]._ty; + return TRUE; + } } - LABEL_8: - ++v1; - v0 = v1; - if (*v1 == -1) - goto LABEL_9; - } - v3 = &trigs[0]._tmsg; - while (*v3 != WM_DIABPREVLVL) { - ++v2; - v3 += 4; - if (v2 >= trigflag[4]) - goto LABEL_8; } - goto LABEL_39; } -LABEL_9: - if (L4DownList[0] != -1) { - v4 = L4DownList; - v5 = L4DownList; - while (1) { - if (dPiece[cursmx][cursmy] == *v4) { - sprintf(infostr, "Down to level %i", currlevel + 1); - v2 = 0; - if (trigflag[4] > 0) - break; + + for (i = 0; L4DownList[i] != -1; i++) { + if (dPiece[cursmx][cursmy] == L4DownList[i]) { + sprintf(infostr, "Down to level %i", currlevel + 1); + for (j = 0; j < trigflag[4]; j++) { + if (trigs[j]._tmsg == WM_DIABNEXTLVL) { + cursmx = trigs[j]._tx; + cursmy = trigs[j]._ty; + return TRUE; + } } - LABEL_16: - ++v5; - v4 = v5; - if (*v5 == -1) - goto LABEL_17; - } - v6 = &trigs[0]._tmsg; - while (*v6 != WM_DIABNEXTLVL) { - ++v2; - v6 += 4; - if (v2 >= trigflag[4]) - goto LABEL_16; } - goto LABEL_39; } -LABEL_17: + if (currlevel == 13) { - if (L4TWarpUpList[0] != -1) { - v7 = L4TWarpUpList; - v8 = L4TWarpUpList; - while (1) { - if (dPiece[cursmx][cursmy] == *v7) { - v9 = 0; - if (trigflag[4] > 0) - break; - } - LABEL_27: - ++v8; - v7 = v8; - if (*v8 == -1) - goto LABEL_28; - } - v10 = trigs; - while (1) { - if (v10->_tmsg == WM_DIABTWARPUP) { - v11 = abs(v10->_tx - cursmx); - v12 = abs(v10->_ty - cursmy); - if (v11 < 4 && v12 < 4) - break; + for (i = 0; L4TWarpUpList[i] != -1; i++) { + if (dPiece[cursmx][cursmy] == L4TWarpUpList[i]) { + for (j = 0; j < trigflag[4]; j++) { + if (trigs[j]._tmsg == WM_DIABTWARPUP) { + dx = abs(trigs[j]._tx - cursmx); + dy = abs(trigs[j]._ty - cursmy); + if (dx < 4 && dy < 4) { + strcpy(infostr, "Up to town"); + cursmx = trigs[j]._tx; + cursmy = trigs[j]._ty; + return TRUE; + } + } } - ++v9; - ++v10; - if (v9 >= trigflag[4]) - goto LABEL_27; } - strcpy(infostr, "Up to town"); - v16 = v9; - cursmx = trigs[v16]._tx; - v17 = trigs[v16]._ty; - goto LABEL_40; } - } else { - LABEL_28: - if (currlevel == 15 && L4PentaList[0] != -1) { - v13 = L4PentaList; - v14 = L4PentaList; - while (1) { - if (dPiece[cursmx][cursmy] == *v13) { - strcpy(infostr, "Down to Diablo"); - v2 = 0; - if (trigflag[4] > 0) - break; + } + + if (currlevel == 15) { + for (i = 0; L4PentaList[i] != -1; i++) { + if (dPiece[cursmx][cursmy] == L4PentaList[i]) { + strcpy(infostr, "Down to Diablo"); + for (j = 0; j < trigflag[4]; j++) { + if (trigs[j]._tmsg == WM_DIABNEXTLVL) { + cursmx = trigs[j]._tx; + cursmy = trigs[j]._ty; + return TRUE; + } } - LABEL_36: - ++v14; - v13 = v14; - if (*v14 == -1) - return 0; - } - v15 = &trigs[0]._tmsg; - while (*v15 != WM_DIABNEXTLVL) { - ++v2; - v15 += 4; - if (v2 >= trigflag[4]) - goto LABEL_36; } - LABEL_39: - v18 = v2; - v19 = trigs[v18]._tx; - v17 = trigs[v18]._ty; - cursmx = v19; - LABEL_40: - cursmy = v17; - return 1; } } - return 0; + + return FALSE; } void Freeupstairs() diff --git a/Source/trigs.h b/Source/trigs.h index 98bf7f994..2e15927f5 100644 --- a/Source/trigs.h +++ b/Source/trigs.h @@ -20,7 +20,7 @@ BOOL ForceTownTrig(); BOOL ForceL1Trig(); BOOL ForceL2Trig(); BOOL ForceL3Trig(); -unsigned char ForceL4Trig(); +BOOL ForceL4Trig(); void Freeupstairs(); BOOL ForceSKingTrig(); BOOL ForceSChambTrig();