From 661a6218735eef673290593eb73af081e8537843 Mon Sep 17 00:00:00 2001 From: Sergey Semushin Date: Wed, 1 May 2019 12:12:17 +0300 Subject: [PATCH] Clean up PlaceUniques. --- Source/monster.cpp | 89 ++++++++++++++-------------------------------- 1 file changed, 26 insertions(+), 63 deletions(-) diff --git a/Source/monster.cpp b/Source/monster.cpp index 7fbbfafca..ca823a442 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1006,69 +1006,32 @@ void InitMonsters() void PlaceUniques() { - int v0; // edi - int v1; // eax - UniqMonstStruct *v2; // ecx - int v3; // eax - int v4; // edx - CMonster *v5; // esi - int v6; // eax - int v7; // edx - - v0 = 0; - if (UniqMonst[0].mtype != -1) { - v1 = 0; - v2 = UniqMonst; - while (UniqMonst[v1].mlevel != currlevel) { - LABEL_25: - v1 = ++v0; - v2 = &UniqMonst[v0]; - if (v2->mtype == -1) - return; - } - v3 = 0; - v4 = 0; - if (nummtypes > 0) { - v5 = Monsters; - do { - if (v3) - break; - v6 = -((char)v2->mtype != (unsigned char)v5->mtype); - ++v5; - v3 = v6 + 1; - ++v4; - } while (v4 < nummtypes); - } - v7 = v4 - 1; - if (!v0) { - if (quests[QTYPE_GARB]._qactive) - goto LABEL_23; - v3 = 0; - } - if (v0 == 2) { - if (quests[QTYPE_ZHAR]._qactive) - goto LABEL_23; - v3 = 0; - } - if (v0 == 3) { - if (quests[QTYPE_BOL]._qactive) - goto LABEL_23; - v3 = 0; - } - if (v0 != 7) { - LABEL_20: - if (v0 == 8 && !quests[QTYPE_WARLRD]._qactive) - v3 = 0; - goto LABEL_23; - } - if (!quests[QTYPE_VEIL]._qactive) { - v3 = 0; - goto LABEL_20; - } - LABEL_23: - if (v3) - PlaceUniqueMonst(v0, v7, 8); - goto LABEL_25; + int u; + BOOL done; + int mt; + + for (u = 0; UniqMonst[u].mtype != -1; u++) { + if (UniqMonst[u].mlevel != currlevel) + continue; + done = FALSE; + for (mt = 0; mt < nummtypes; mt++) { + if (done) + break; + done = (Monsters[mt].mtype == UniqMonst[u].mtype); + } + mt--; + if (u == 0 && quests[QTYPE_GARB]._qactive == 0) + done = FALSE; + if (u == 2 && quests[QTYPE_ZHAR]._qactive == 0) + done = FALSE; + if (u == 3 && quests[QTYPE_BOL]._qactive == 0) + done = FALSE; + if (u == 7 && quests[QTYPE_VEIL]._qactive == 0) + done = FALSE; + if (u == 8 && quests[QTYPE_WARLRD]._qactive == 0) + done = FALSE; + if (done) + PlaceUniqueMonst(u, mt, 8); } }