aboutsummaryrefslogtreecommitdiff
path: root/scumm/script_v2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/script_v2.cpp')
-rw-r--r--scumm/script_v2.cpp36
1 files changed, 31 insertions, 5 deletions
diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp
index c79af8acac..62b6e3ba76 100644
--- a/scumm/script_v2.cpp
+++ b/scumm/script_v2.cpp
@@ -2535,9 +2535,16 @@ void Scumm::o6_talkActor()
_messagePtr = _scriptPointer;
if ((_gameId == GID_DIG) && (_messagePtr[0] == '/')) {
- _scriptPointer += strlen((char*)_scriptPointer) + 1;
+ char pointer[20];
+ int i, j;
+
+ _scriptPointer += resStrLen((char*)_scriptPointer)+ 1;
translateText((char*)_messagePtr, (char*)&transText);
- char *pointer = strtok((char *)_messagePtr, "/");
+ for (i = 0, j = 0; (_messagePtr[i] != '/' || j == 0) && j < 19; i++) {
+ if (_messagePtr[i] != '/')
+ pointer[j++] = _messagePtr[i];
+ }
+ pointer[j] = 0;
_sound->playBundleSound(pointer);
_messagePtr = (byte*)&transText;
setStringVars(0);
@@ -2555,9 +2562,16 @@ void Scumm::o6_talkEgo()
_messagePtr = _scriptPointer;
if ((_gameId == GID_DIG) && (_messagePtr[0] == '/')) {
- _scriptPointer += strlen((char*)_scriptPointer) + 1;
+ char pointer[20];
+ int i, j;
+
+ _scriptPointer += resStrLen((char*)_scriptPointer) + 1;
translateText((char*)_messagePtr, (char*)&transText);
- char *pointer = strtok((char *)_messagePtr, "/");
+ for (i = 0, j = 0; (_messagePtr[i] != '/' || j == 0) && j < 19; i++) {
+ if (_messagePtr[i] != '/')
+ pointer[j++] = _messagePtr[i];
+ }
+ pointer[j] = 0;
_sound->playBundleSound(pointer);
_messagePtr = (byte*)&transText;
setStringVars(0);
@@ -2722,6 +2736,8 @@ void Scumm::o6_miscOps()
speed = 71;
else
speed = 1000 / _insaneFlag;
+ if (args[1] == 1) printf("startSmush one is true\n");
+ if (args[2] == 1) printf("startSmush two is true\n");
ScummRenderer * sr = new ScummRenderer(this, speed);
SmushPlayer * sp = new SmushPlayer(sr);
sp->play((char*)getStringAddressVar(VAR_VIDEONAME), getGameDataPath());
@@ -2763,6 +2779,16 @@ void Scumm::o6_miscOps()
strcpy((char*)&charset._buffer, (char*)&buf + 13);
description();
}
+ } else {
+ setStringVars(0);
+
+ _string[0].charset = args[1];
+ _string[0].color = args[2];
+ _string[0].xpos = args[3];
+ _string[0].ypos = args[4];
+
+ addMessageToStack(getStringAddressVar(VAR_STRING2DRAW));
+ drawDescString();
}
break;
case 17:
@@ -3104,7 +3130,7 @@ void Scumm::decodeParseString2(int m, int n)
if ((_messagePtr[0] == '/') && (_gameId == GID_DIG)) {
translateText((char*)_messagePtr, (char*)&transText);
_messagePtr = (byte*)&transText;
- _scriptPointer += strlen((char*)_scriptPointer) + 1;
+ _scriptPointer += resStrLen((char*)_scriptPointer) + 1;
switch (m) {
case 0:
actorTalk();