aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock
diff options
context:
space:
mode:
authorPaul Gilbert2015-07-05 21:28:26 -0400
committerPaul Gilbert2015-07-05 21:28:26 -0400
commitb935cb1656cd159073021c85f5853f4d577977fb (patch)
tree3c639a041a0bd3be0ef4587da8e3bf7bd5197d87 /engines/sherlock
parent8570f052a39eb6ba4efe3764eb152076fbcd2f76 (diff)
downloadscummvm-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.cpp17
-rw-r--r--engines/sherlock/tattoo/tattoo_talk.cpp7
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;