aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/text_v2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/text_v2.cpp')
-rw-r--r--engines/kyra/text_v2.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/engines/kyra/text_v2.cpp b/engines/kyra/text_v2.cpp
index c5252d78aa..5e888fa972 100644
--- a/engines/kyra/text_v2.cpp
+++ b/engines/kyra/text_v2.cpp
@@ -364,6 +364,43 @@ void KyraEngine_v2::startDialogue(int dlgIndex) {
processDialogue(offs, vocH, csEntry);
}
+void KyraEngine_v2::zanthSceneStartupChat() {
+ int tableIndex = _mainCharacter.sceneId - READ_LE_UINT16(&_ingameTalkObjIndex[5 + _newChapterFile]);
+ if (queryGameFlag(0x159) || _newSceneDlgState[tableIndex])
+ return;
+
+ int csEntry, vocH, scIndex1, scIndex2;
+ updateDlgBuffer();
+ loadDlgHeader(csEntry, vocH, scIndex1, scIndex2);
+
+ uint8 bufferIndex = 8 + scIndex1 * 6 + scIndex2 * 4 + tableIndex * 2;
+ int offs = READ_LE_UINT16(_dlgBuffer + bufferIndex);
+ processDialogue(offs, vocH, csEntry);
+
+ _newSceneDlgState[tableIndex] = 1;
+}
+
+void KyraEngine_v2::zanthRandomChat() {
+ int tableIndex = _mainCharacter.sceneId - READ_LE_UINT16(&_ingameTalkObjIndex[5 + _newChapterFile]);
+ if (queryGameFlag(0x164))
+ return;
+
+ int csEntry, vocH, scIndex1, unused;
+ updateDlgBuffer();
+ loadDlgHeader(csEntry, vocH, scIndex1, unused);
+
+ if (_unkFlag1) {
+ _unkFlag1 = 0;
+ tableIndex += 2;
+ } else {
+ _unkFlag1 = 1;
+ }
+
+ uint8 bufferIndex = 8 + scIndex1 * 6 + tableIndex * 2;
+ int offs = READ_LE_UINT16(_dlgBuffer + bufferIndex);
+ processDialogue(offs, vocH, csEntry);
+}
+
void KyraEngine_v2::updateDlgBuffer() {
static const char DlgFileTemplate[] = "CH**-S**.DLG";
char filename[13];