diff options
author | Paul Gilbert | 2015-08-28 21:27:17 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-08-28 21:27:17 -0400 |
commit | fefd46c60c94c20261d910e22de767fba3dcbcc7 (patch) | |
tree | 8a6b6935d3728cd2461dcaab100e4697f8fc53ba /engines/sherlock/tattoo/tattoo_talk.cpp | |
parent | c8aa1450a250646e59b6bdb0c5c16be86b854f0b (diff) | |
download | scummvm-rg350-fefd46c60c94c20261d910e22de767fba3dcbcc7.tar.gz scummvm-rg350-fefd46c60c94c20261d910e22de767fba3dcbcc7.tar.bz2 scummvm-rg350-fefd46c60c94c20261d910e22de767fba3dcbcc7.zip |
SHERLOCK: RT: Workaround for monkey cap cutscene ending too quickly
Somewhat unusually, the cutscene for the monkey stealing Hodgkins
cap (wilb29a.tlk) is ended immediately after they both run off-screen,
but the characters aren't properly marked as hidden until several
seconds later when another script, 30cuend, is called. If a user
saved the game really quickly before 30cuend is fired, it can leave
the game in an in-consistent state. This commit fixes that by forcing
the WAIT cursor to remain active until 30cuend has executed.
Diffstat (limited to 'engines/sherlock/tattoo/tattoo_talk.cpp')
-rw-r--r-- | engines/sherlock/tattoo/tattoo_talk.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/engines/sherlock/tattoo/tattoo_talk.cpp b/engines/sherlock/tattoo/tattoo_talk.cpp index 7c57605f61..98bf452c3c 100644 --- a/engines/sherlock/tattoo/tattoo_talk.cpp +++ b/engines/sherlock/tattoo/tattoo_talk.cpp @@ -184,7 +184,22 @@ TattooTalk::TattooTalk(SherlockEngine *vm) : Talk(vm), _talkWidget(vm), _passwor } void TattooTalk::talkTo(const Common::String filename) { + Events &events = *_vm->_events; + TattooUserInterface &ui = *(TattooUserInterface *)_vm->_ui; + + // WORKAROUND: Keep wait cursor active until very end of the cutscene of the monkey + // stealing the cap, which is finished by calling the 30cuend script + if (filename == "wilb29a") + events.incWaitCounter(); + Talk::talkTo(filename); + + if (filename == "wilb29a") + ui._menuMode = TALK_MODE; + if (filename == "30cuend") { + events.decWaitCounter(); + events.setCursor(ARROW); + } } void TattooTalk::talkInterface(const byte *&str) { |