aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorTravis Howell2008-04-30 12:54:07 +0000
committerTravis Howell2008-04-30 12:54:07 +0000
commitd8bbcd9211bb1d3373b49c22e85482d844cc1135 (patch)
treeca8e65b58d3bb0fcba1d1e8551ae6d7bb800e43b /engines/scumm
parent5e52a8e533dcf7eaa1497c26dd70af87b4f58b7f (diff)
downloadscummvm-rg350-d8bbcd9211bb1d3373b49c22e85482d844cc1135.tar.gz
scummvm-rg350-d8bbcd9211bb1d3373b49c22e85482d844cc1135.tar.bz2
scummvm-rg350-d8bbcd9211bb1d3373b49c22e85482d844cc1135.zip
Fix subtitle regressions in The Dig.
svn-id: r31788
Diffstat (limited to 'engines/scumm')
-rw-r--r--engines/scumm/actor.cpp25
1 files changed, 19 insertions, 6 deletions
diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp
index 1eefea4fc9..63718fbb5a 100644
--- a/engines/scumm/actor.cpp
+++ b/engines/scumm/actor.cpp
@@ -1863,8 +1863,12 @@ void ScummEngine_v7::actorTalk(const byte *msg) {
// Play associated speech, if any
playSpeech((byte *)_lastStringTag);
- if ((_game.version == 7 && !_keepText) || (_game.version == 8 && VAR(VAR_HAVE_MSG))) {
- stopTalk();
+ if (_game.id == GID_DIG || _game.id == GID_CMI) {
+ if (VAR(VAR_HAVE_MSG))
+ stopTalk();
+ } else {
+ if (!_keepText)
+ stopTalk();
}
if (_actorToPrintStrFor == 0xFF) {
setTalkingActor(0xFF);
@@ -1968,6 +1972,12 @@ void Actor::runActorTalkScript(int f) {
if (_vm->_game.version == 8 && _vm->VAR(_vm->VAR_HAVE_MSG) == 2)
return;
+ if (_vm->_game.id == GID_FT && _vm->_string[0].no_talk_anim)
+ return;
+
+ if (!_vm->getTalkingActor() || _room != _vm->_currentRoom || _frame == f)
+ return;
+
if (_talkScript) {
int script = _talkScript;
int args[16];
@@ -1977,8 +1987,7 @@ void Actor::runActorTalkScript(int f) {
_vm->runScript(script, 1, 0, args);
} else {
- if (_frame != f)
- startAnimActor(f);
+ startAnimActor(f);
}
}
@@ -2002,10 +2011,14 @@ void ScummEngine::stopTalk() {
setTalkingActor(0xFF);
a->_heTalking = false;
}
- if (_game.version == 8 || _game.heversion >= 60)
+
+ if (_game.id == GID_DIG || _game.id == GID_CMI) {
setTalkingActor(0);
- if (_game.version == 8)
VAR(VAR_HAVE_MSG) = 0;
+ } else if (_game.heversion >= 60) {
+ setTalkingActor(0);
+ }
+
_keepText = false;
if (_game.version >= 7) {
#ifndef DISABLE_SCUMM_7_8