diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 2e94c738a..20badf4a7 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -4415,54 +4415,28 @@ void __fastcall MI_Infra(int i) void __fastcall MI_Apoca(int i) { - int v1; // esi - int v2; // edi - signed int v3; // eax - int v4; // ecx - int v5; // ebx - int id; // [esp+8h] [ebp-8h] - int v7; // [esp+Ch] [ebp-4h] + int j, k, id; + BOOL exit; - v1 = i; - v2 = missile[i]._miVar2; id = missile[i]._misource; - v3 = 0; - if (v2 >= missile[i]._miVar3) - goto LABEL_18; - do { - if (v3) - break; - v4 = missile[v1]._miVar4; - v7 = missile[v1]._miVar4; - if (v4 >= missile[v1]._miVar5) { - LABEL_11: - missile[v1]._miVar4 = missile[v1]._miVar6; - } else { - v5 = v2 + 112 * v4; - while (!v3) { - if (dMonster[0][v5] > 3 && !nSolidTable[dPiece[0][v5]]) { - AddMissile(v4, v2, v4, v2, plr[id]._pdir, MIS_BOOM, 0, id, missile[v1]._midam, 0); - v4 = v7; - v3 = 1; - } - ++v4; - v5 += 112; - v7 = v4; - if (v4 >= missile[v1]._miVar5) { - if (v3) - break; - goto LABEL_11; - } + exit = FALSE; + for (j = missile[i]._miVar2; j < missile[i]._miVar3 && !exit; j++) { + for (k = missile[i]._miVar4; k < missile[i]._miVar5 && !exit; k++) { + if (dMonster[k][j] > 3 && !nSolidTable[dPiece[k][j]]) { + AddMissile(k, j, k, j, plr[id]._pdir, MIS_BOOM, 0, id, missile[i]._midam, 0); + exit = TRUE; } } - ++v2; - } while (v2 < missile[v1]._miVar3); - if (v3 != 1) { - LABEL_18: - missile[v1]._miDelFlag = TRUE; + if (!exit) { + missile[i]._miVar4 = missile[i]._miVar6; + } + } + + if (exit == TRUE) { + missile[i]._miVar2 = j - 1; + missile[i]._miVar4 = k; } else { - missile[v1]._miVar2 = v2 - 1; - missile[v1]._miVar4 = v7; + missile[i]._miDelFlag = TRUE; } }