diff options
author | Denis Kasak | 2009-08-12 07:34:31 +0000 |
---|---|---|
committer | Denis Kasak | 2009-08-12 07:34:31 +0000 |
commit | 8ca10ac3b0527e51a0f72a60e5249525a2746e1c (patch) | |
tree | 8a23beb2ae0d53e1572f65da4c1dee4d3263d1a1 /engines | |
parent | c57515b5f868d5c79d4ec9176c9f0c92cac9b454 (diff) | |
download | scummvm-rg350-8ca10ac3b0527e51a0f72a60e5249525a2746e1c.tar.gz scummvm-rg350-8ca10ac3b0527e51a0f72a60e5249525a2746e1c.tar.bz2 scummvm-rg350-8ca10ac3b0527e51a0f72a60e5249525a2746e1c.zip |
Fixed dialogues logic (some indexes were calculated erroneously +/- 1).
svn-id: r43312
Diffstat (limited to 'engines')
-rw-r--r-- | engines/draci/game.cpp | 6 | ||||
-rw-r--r-- | engines/draci/script.cpp | 7 |
2 files changed, 9 insertions, 4 deletions
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<Text *>(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<int> ¶ms) { } void Script::resetBlock(Common::Queue<int> ¶ms) { - int blockID = params.pop(); + int blockID = params.pop() - 1; _vm->_game->_dialogueVars[_vm->_game->_dialogueOffsets[_vm->_game->_currentDialogue]+blockID] = 0; } |