diff options
author | Paul Gilbert | 2015-07-05 21:28:26 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-07-05 21:28:26 -0400 |
commit | b935cb1656cd159073021c85f5853f4d577977fb (patch) | |
tree | 3c639a041a0bd3be0ef4587da8e3bf7bd5197d87 /engines/sherlock | |
parent | 8570f052a39eb6ba4efe3764eb152076fbcd2f76 (diff) | |
download | scummvm-rg350-b935cb1656cd159073021c85f5853f4d577977fb.tar.gz scummvm-rg350-b935cb1656cd159073021c85f5853f4d577977fb.tar.bz2 scummvm-rg350-b935cb1656cd159073021c85f5853f4d577977fb.zip |
SHERLOCK: RT: Fix People::reset when _scriptMoreFlag is set
Diffstat (limited to 'engines/sherlock')
-rw-r--r-- | engines/sherlock/people.cpp | 17 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_talk.cpp | 7 |
2 files changed, 16 insertions, 8 deletions
diff --git a/engines/sherlock/people.cpp b/engines/sherlock/people.cpp index dae0d5d0c0..2317535640 100644 --- a/engines/sherlock/people.cpp +++ b/engines/sherlock/people.cpp @@ -193,6 +193,8 @@ People::~People() { } void People::reset() { + SaveManager &saves = *_vm->_saves; + Talk &talk = *_vm->_talk; _data[HOLMES]->_description = "Sherlock Holmes!"; // Note: Serrated Scalpel only uses a single Person slot for Sherlock.. Watson is handled by scene sprites @@ -200,13 +202,18 @@ void People::reset() { for (int idx = 0; idx < count; ++idx) { Person &p = *_data[idx]; - p._type = (idx == 0) ? CHARACTER : INVALID; - if (IS_SERRATED_SCALPEL) + if (IS_SERRATED_SCALPEL) { + p._type = CHARACTER; + p._sequenceNumber = Tattoo::STOP_DOWNRIGHT; p._position = Point32(100 * FIXED_INT_MULTIPLIER, 110 * FIXED_INT_MULTIPLIER); - else + } else if (!talk._scriptMoreFlag && !saves._justLoaded) { + p._type = (idx == 0) ? CHARACTER : INVALID; + p._sequenceNumber = Scalpel::STOP_DOWNRIGHT; p._position = Point32(36 * FIXED_INT_MULTIPLIER, 29 * FIXED_INT_MULTIPLIER); - - p._sequenceNumber = IS_SERRATED_SCALPEL ? (int)Scalpel::STOP_DOWNRIGHT : (int)Tattoo::STOP_DOWNRIGHT; + p._use[0]._verb = ""; + p._use[1]._verb = ""; + } + p._imageFrame = nullptr; p._frameNumber = 1; p._delta = Point32(0, 0); diff --git a/engines/sherlock/tattoo/tattoo_talk.cpp b/engines/sherlock/tattoo/tattoo_talk.cpp index 51704e7023..3cfb2ea2b4 100644 --- a/engines/sherlock/tattoo/tattoo_talk.cpp +++ b/engines/sherlock/tattoo/tattoo_talk.cpp @@ -22,6 +22,7 @@ #include "sherlock/tattoo/tattoo_talk.h" #include "sherlock/tattoo/tattoo_people.h" +#include "sherlock/tattoo/tattoo_scene.h" #include "sherlock/tattoo/tattoo_user_interface.h" #include "sherlock/sherlock.h" #include "sherlock/screen.h" @@ -267,7 +268,7 @@ OpcodeReturn TattooTalk::cmdGotoScene(const byte *&str) { Scene &scene = *_vm->_scene; scene._goToScene = str[1] - 1; - if (scene._goToScene != 100) { + if (scene._goToScene != OVERHEAD_MAP) { // Not going to the map overview map._oldCharPoint = scene._goToScene; @@ -283,10 +284,10 @@ OpcodeReturn TattooTalk::cmdGotoScene(const byte *&str) { } _scriptMoreFlag = 1; - } // if (scene._goToScene != 100) + } str += 7; - if (scene._goToScene != 100) + if (scene._goToScene != OVERHEAD_MAP) _scriptSaveIndex = str - _scriptStart; _endStr = true; |