From 8ca10ac3b0527e51a0f72a60e5249525a2746e1c Mon Sep 17 00:00:00 2001 From: Denis Kasak Date: Wed, 12 Aug 2009 07:34:31 +0000 Subject: Fixed dialogues logic (some indexes were calculated erroneously +/- 1). svn-id: r43312 --- engines/draci/game.cpp | 6 +++--- engines/draci/script.cpp | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'engines/draci') diff --git a/engines/draci/game.cpp b/engines/draci/game.cpp index 860344c693..715b233ab2 100644 --- a/engines/draci/game.cpp +++ b/engines/draci/game.cpp @@ -560,7 +560,7 @@ void Game::dialogueMenu(int dialogueID) { break; } _lastBlock = _lines[hit]; - _dialogueVars[_dialogueOffsets[dialogueID] + _lastBlock + 1] += 1; + _dialogueVars[_dialogueOffsets[dialogueID] + _lastBlock] += 1; _dialogueBegin = false; oldLines = _dialogueLines; @@ -598,7 +598,7 @@ int Game::dialogueDraw() { } for (i = _dialogueLines; i < kDialogueLines; ++i) { - _lines[i] = 0; + _lines[i] = -1; anim = _dialogueAnims[i]; dialogueLine = reinterpret_cast(anim->getFrame()); dialogueLine->setText(""); @@ -672,7 +672,7 @@ void Game::dialogueInit(int dialogID) { } _loopStatus = kStatusDialogue; - _lastBlock = 0; + _lastBlock = -1; _dialogueBegin = true; } diff --git a/engines/draci/script.cpp b/engines/draci/script.cpp index f526bdc874..26d0a666ba 100644 --- a/engines/draci/script.cpp +++ b/engines/draci/script.cpp @@ -223,15 +223,20 @@ int Script::funcAtBegin(int yesno) { } int Script::funcLastBlock(int blockID) { + blockID -= 1; return _vm->_game->_lastBlock == blockID; } int Script::funcBlockVar(int blockID) { + blockID -= 1; + return _vm->_game->_dialogueVars[_vm->_game->_dialogueOffsets[_vm->_game->_currentDialogue] + blockID]; } int Script::funcHasBeen(int blockID) { + blockID -= 1; + return _vm->_game->_dialogueVars[_vm->_game->_dialogueOffsets[_vm->_game->_currentDialogue] + blockID] > 0; } @@ -692,7 +697,7 @@ void Script::resetDialogueFrom(Common::Queue ¶ms) { } void Script::resetBlock(Common::Queue ¶ms) { - int blockID = params.pop(); + int blockID = params.pop() - 1; _vm->_game->_dialogueVars[_vm->_game->_dialogueOffsets[_vm->_game->_currentDialogue]+blockID] = 0; } -- cgit v1.2.3