From ed98e5f71d42bfdbbf69fc49ec88d0e315e42701 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sat, 27 Apr 2019 03:18:48 +0200 Subject: [PATCH] Clean up S_TalkEnter --- Source/stores.cpp | 110 ++++++++++++++++++---------------------------- 1 file changed, 42 insertions(+), 68 deletions(-) diff --git a/Source/stores.cpp b/Source/stores.cpp index 797d762a5..35c5c6c02 100644 --- a/Source/stores.cpp +++ b/Source/stores.cpp @@ -1418,36 +1418,36 @@ void S_StartIdShow() void S_StartTalk() { - int s1, s2, y1, y2, y3, i; + int i, tq, sn, sn2, la; stextsize = 0; stextscrl = FALSE; sprintf(tempstr, "Talk to %s", talkname[talker]); AddSText(0, 2, 1, tempstr, COL_GOLD, 0); AddSLine(5); - s1 = 0; + sn = 0; for (i = 0; i < 16; i++) { if (quests[i]._qlevel == 2 && ((DWORD *)&Qtalklist[talker])[i] != -1 && quests[i]._qlog) - s1++; + sn++; } - if (s1 > 6) { - y1 = 14 - (s1 >> 1); - s2 = 1; + if (sn > 6) { + sn = 14 - (sn >> 1); + la = 1; } else { - y1 = 15 - s1; - s2 = 2; + sn = 15 - sn; + la = 2; } - y2 = y1 - 2; + sn2 = sn - 2; for (i = 0; i < 16; i++) { if (quests[i]._qlevel == 2 && ((DWORD *)&Qtalklist[talker])[i] != -1 && quests[i]._qlog) { - AddSText(0, y1, 1, questlist[i]._qlstr, COL_WHITE, 1); - y1 += s2; + AddSText(0, sn, 1, questlist[i]._qlstr, COL_WHITE, 1); + sn += la; } } - AddSText(0, y2, 1, "Gossip", COL_BLUE, 1); + AddSText(0, sn2, 1, "Gossip", COL_BLUE, 1); AddSText(0, 22, 1, "Back", COL_WHITE, 1); } @@ -2645,69 +2645,43 @@ void S_SIDEnter() void S_TalkEnter() { - int v0; // edx - int *v1; // edi - signed int v2; // eax - int v3; // esi - int *v4; // ecx - int v5; // esi - signed int v6; // ebp - int v8; // eax - int v9; // ebx - int v10; // ecx + int i, tq, sn, la; if (stextsel == 22) { - StartStore((unsigned char)stextshold); + StartStore(stextshold); stextsel = stextlhold; + return; + } + + sn = 0; + for (i = 0; i < 16; i++) { + if (quests[i]._qlevel == 2 && ((DWORD *)&Qtalklist[talker])[i] != -1 && quests[i]._qlog) + sn++; + } + if (sn > 6) { + sn = 14 - (sn >> 1); + la = 1; } else { - v0 = talker; - v1 = &quests[0]._qlog; - v2 = 0; - v3 = 0; - v4 = &quests[0]._qlog; - do { - if (*((_BYTE *)v4 - 18) == 2 && *((_DWORD *)&Qtalklist[0]._qinfra + v3 + 16 * talker) != -1 && *v4) - ++v2; - v4 += 6; - ++v3; - } while ((signed int)v4 < (signed int)&quests[16]._qlog); - if (v2 <= 6) { - v5 = 15 - v2; - v6 = 2; - } else { - v5 = 14 - (v2 >> 1); - v6 = 1; - } - if (stextsel == v5 - 2) { - SetRndSeed(towner[talker]._tSeed); - v8 = random(0, gossipend - gossipstart + 1); - InitQTextMsg(gossipstart + v8); - } else { - v9 = 0; - do { - if (*((_BYTE *)v1 - 18) == 2) { - v10 = *((_DWORD *)&Qtalklist[0]._qinfra + v9 + 16 * v0); - if (v10 != -1) { - if (*v1) { - if (v5 == stextsel) { - InitQTextMsg(v10); - v0 = talker; - } - v5 += v6; - } - } - } - v1 += 6; - ++v9; - } while ((signed int)v1 < (signed int)&quests[16]._qlog); + sn = 15 - sn; + la = 2; + } + + if (stextsel == sn - 2) { + SetRndSeed(towner[talker]._tSeed); + tq = gossipstart + random(0, gossipend - gossipstart + 1); + InitQTextMsg(tq); + return; + } + + for (i = 0; i < 16; i++) { + if (quests[i]._qlevel == 2 && ((DWORD *)&Qtalklist[talker])[i] != -1 && quests[i]._qlog) { + if (sn == stextsel) { + InitQTextMsg(((DWORD *)&Qtalklist[talker])[i]); + } + sn += la; } } } -// 69F110: using guessed type int stextlhold; -// 69FB38: using guessed type int talker; -// 6A4EF0: using guessed type int gossipstart; -// 6A8A28: using guessed type int stextsel; -// 6A8A30: using guessed type int gossipend; void S_TavernEnter() {