diff options
-rw-r--r-- | engines/kyra/kyra_v3.cpp | 8 | ||||
-rw-r--r-- | engines/kyra/kyra_v3.h | 2 | ||||
-rw-r--r-- | engines/kyra/script_v3.cpp | 2 |
3 files changed, 8 insertions, 4 deletions
diff --git a/engines/kyra/kyra_v3.cpp b/engines/kyra/kyra_v3.cpp index 42207299d2..dc59d1966f 100644 --- a/engines/kyra/kyra_v3.cpp +++ b/engines/kyra/kyra_v3.cpp @@ -439,11 +439,15 @@ void KyraEngine_v3::snd_stopVoice() { _soundDigital->stopSound(_voiceSoundChannel); } -void KyraEngine_v3::playStudioSFX() { - debugC(9, kDebugLevelMain, "KyraEngine_v3::playStudioSFX()"); +void KyraEngine_v3::playStudioSFX(const char *str) { + debugC(9, kDebugLevelMain, "KyraEngine_v3::playStudioSFX('%s')", str); if (_rnd.getRandomNumberRng(1, 2) != 2) return; + const int strSize = strlen(str) - 1; + if (str[strSize] != '?' && str[strSize] != '!') + return; + playSoundEffect(_curStudioSFX++, 128); if (_curStudioSFX > 291) diff --git a/engines/kyra/kyra_v3.h b/engines/kyra/kyra_v3.h index 7d6cf6e8ed..7f6e556d7a 100644 --- a/engines/kyra/kyra_v3.h +++ b/engines/kyra/kyra_v3.h @@ -138,7 +138,7 @@ private: void snd_stopVoice(); int _curStudioSFX; - void playStudioSFX(); + void playStudioSFX(const char *str); // main menu void initMainMenu(); diff --git a/engines/kyra/script_v3.cpp b/engines/kyra/script_v3.cpp index 061bca4c2a..75ca5ae107 100644 --- a/engines/kyra/script_v3.cpp +++ b/engines/kyra/script_v3.cpp @@ -107,7 +107,7 @@ int KyraEngine_v3::o3_objectChat(ScriptState *script) { const char *str = (const char*)getTableEntry(_useActorBuffer ? _actorFile : _sceneStrings, id); if (str) { objectChat(str, 0, _vocHigh, id); - playStudioSFX(); + playStudioSFX(str); } return 0; } |