aboutsummaryrefslogtreecommitdiff
path: root/sky
diff options
context:
space:
mode:
authorRobert Göffringmann2003-07-14 10:05:32 +0000
committerRobert Göffringmann2003-07-14 10:05:32 +0000
commitffb65a9e042eee2a6c51988a237a36bee29e0497 (patch)
tree1a55697d0f934eeb2589dc19258acef0ccbfb442 /sky
parent4ae380102a533a8a332e46a4daea2a273f3930a1 (diff)
downloadscummvm-rg350-ffb65a9e042eee2a6c51988a237a36bee29e0497.tar.gz
scummvm-rg350-ffb65a9e042eee2a6c51988a237a36bee29e0497.tar.bz2
scummvm-rg350-ffb65a9e042eee2a6c51988a237a36bee29e0497.zip
fix bug #770784: Talking characters stay at last frame
svn-id: r9010
Diffstat (limited to 'sky')
-rw-r--r--sky/logic.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/sky/logic.cpp b/sky/logic.cpp
index 33aa45f7d8..eddb74c449 100644
--- a/sky/logic.cpp
+++ b/sky/logic.cpp
@@ -521,18 +521,15 @@ void SkyLogic::talk() {
uint16 *graphixProg = _compact->grafixProg; // no anim file?
if (graphixProg) {
- if (*graphixProg) {
+ if ((*graphixProg) && ((_compact->extCompact->spTime != 3) || (!_skySound->speechFinished()))) {
// we will force the animation to finish 3 game cycles
// before the speech actually finishes - because it looks good.
- if ((_compact->extCompact->spTime != 3) || (!_skySound->speechFinished())) {
- _compact->frame = *(graphixProg + 2) + _compact->offset;
- graphixProg += 3;
- _compact->grafixProg = graphixProg;
- }
+ _compact->frame = *(graphixProg + 2) + _compact->offset;
+ graphixProg += 3;
+ _compact->grafixProg = graphixProg;
} else {
- // we ran out of frames, let actor stand still.
- // TODO: we should improve this and simply restart animation.
+ // we ran out of frames or finished speech, let actor stand still.
_compact->frame = _compact->getToFlag;
_compact->grafixProg = 0;
}