aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/script_e1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/agos/script_e1.cpp')
-rw-r--r--engines/agos/script_e1.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/engines/agos/script_e1.cpp b/engines/agos/script_e1.cpp
index 6767afaba7..9acac2339f 100644
--- a/engines/agos/script_e1.cpp
+++ b/engines/agos/script_e1.cpp
@@ -152,7 +152,7 @@ void AGOSEngine::setupElvira1Opcodes(OpcodeProc *op) {
op[260] = &AGOSEngine::oe1_ifTime;
op[261] = &AGOSEngine::o_here;
op[262] = &AGOSEngine::o_doClassIcons;
- op[263] = &AGOSEngine::os1_playTune;
+ op[263] = &AGOSEngine::oe1_playTune;
op[266] = &AGOSEngine::o_setAdjNoun;
op[267] = &AGOSEngine::oe1_zoneDisk;
op[268] = &AGOSEngine::o_saveUserGame;
@@ -600,6 +600,26 @@ void AGOSEngine::oe1_ifTime() {
setScriptCondition(false);
}
+void AGOSEngine::oe1_playTune() {
+ // 264: play tune
+ int music = getVarOrWord();
+ int track = getVarOrWord();
+
+ if (music != _lastMusicPlayed) {
+ _lastMusicPlayed = music;
+ // No tune under water
+ if (music == 4) {
+ if (getPlatform() == Common::kPlatformAmiga)
+ _mixer->stopHandle(_modHandle);
+ else
+ midi.stop();
+ } else {
+ loadMusic(music);
+ midi.startTrack(track);
+ }
+ }
+}
+
void AGOSEngine::oe1_zoneDisk() {
// 267: set disk number of each zone
getVarOrWord();