diff options
Diffstat (limited to 'engines/kyra/text_v2.cpp')
-rw-r--r-- | engines/kyra/text_v2.cpp | 37 |
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]; |