diff options
-rw-r--r-- | scumm/string.cpp | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/scumm/string.cpp b/scumm/string.cpp index 8ba5574569..58efc07868 100644 --- a/scumm/string.cpp +++ b/scumm/string.cpp @@ -718,7 +718,23 @@ void Scumm::addVerbToStack(int var) if (num) { for (i = 1; i < _maxVerbs; i++) { if (num == _verbs[i].verbid && !_verbs[i].type && !_verbs[i].saveid) { - addMessageToStack(getResourceAddress(rtVerb, i)); + byte *ptr = getResourceAddress(rtVerb, i); + if ((_features & GF_AFTER_V8) && (ptr[0] == '/')) { + char pointer[20]; + int i, j; + + translateText(ptr, _transText); + + for (i = 0, j = 0; (ptr[i] != '/' || j == 0) && j < 19; i++) { + if (ptr[i] != '/') + pointer[j++] = ptr[i]; + } + pointer[j] = 0; + _sound->_talkChannel = _sound->playBundleSound(pointer); + addMessageToStack(_transText); + } else { + addMessageToStack(ptr); + } break; } } @@ -749,7 +765,22 @@ void Scumm::addStringToStack(int var) if (var) { ptr = getStringAddress(var); if (ptr) { - addMessageToStack(ptr); + if ((_features & GF_AFTER_V8) && (ptr[0] == '/')) { + char pointer[20]; + int i, j; + + translateText(ptr, _transText); + + for (i = 0, j = 0; (ptr[i] != '/' || j == 0) && j < 19; i++) { + if (ptr[i] != '/') + pointer[j++] = ptr[i]; + } + pointer[j] = 0; + _sound->_talkChannel = _sound->playBundleSound(pointer); + addMessageToStack(_transText); + } else { + addMessageToStack(ptr); + } return; } } |