aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen
diff options
context:
space:
mode:
authorPaul Gilbert2018-03-11 18:11:51 -0400
committerPaul Gilbert2018-03-11 18:11:51 -0400
commita7ee4ea4aec4f5fd2443d20f2654a464eb980c98 (patch)
treeb624e2033a9fbe3b4ee7ce4721a38778b52580de /engines/xeen
parent31bf086186e3bd1747f9cff1e974a22513cadbab (diff)
downloadscummvm-rg350-a7ee4ea4aec4f5fd2443d20f2654a464eb980c98.tar.gz
scummvm-rg350-a7ee4ea4aec4f5fd2443d20f2654a464eb980c98.tar.bz2
scummvm-rg350-a7ee4ea4aec4f5fd2443d20f2654a464eb980c98.zip
XEEN: Subtitle fixes for Clouds ending
Diffstat (limited to 'engines/xeen')
-rw-r--r--engines/xeen/worldofxeen/clouds_cutscenes.cpp27
1 files changed, 19 insertions, 8 deletions
diff --git a/engines/xeen/worldofxeen/clouds_cutscenes.cpp b/engines/xeen/worldofxeen/clouds_cutscenes.cpp
index 6ec66d70af..78e85ba62e 100644
--- a/engines/xeen/worldofxeen/clouds_cutscenes.cpp
+++ b/engines/xeen/worldofxeen/clouds_cutscenes.cpp
@@ -375,7 +375,10 @@ bool CloudsCutscenes::showCloudsIntroInner() {
void CloudsCutscenes::showCloudsEnding(uint finalScore) {
EventsManager &events = *g_vm->_events;
+ FileManager &files = *g_vm->_files;
Sound &sound = *g_vm->_sound;
+
+ files.setGameCc(0);
_mirror.load("mirror.end");
_mirrBack.load("mirrback.end");
_mergeX = 0;
@@ -537,9 +540,10 @@ bool CloudsCutscenes::showCloudsEnding1() {
WAIT(3);
}
sound.setMusicPercent(60);
+ _subtitles.setLine(11);
// Alamar's monologue
- for (int idx = 0; idx < 3; ++idx) {
+ for (int idx = 0; idx < (sound._subtitles ? 4 : 3); ++idx) {
switch (idx) {
case 0:
// You have defeated my general, Lord Xeen
@@ -553,6 +557,11 @@ bool CloudsCutscenes::showCloudsEnding1() {
// But the Dark Side will always be mine
sound.playSound("dark3.voc");
break;
+ default:
+ // Laugh
+ sound.playSound("darklaff.voc");
+ sound.setMusicPercent(75);
+ break;
}
do {
@@ -578,12 +587,14 @@ bool CloudsCutscenes::showCloudsEnding1() {
_subtitles.show();
WAIT(3);
- } while (sound.isSoundPlaying() || _subtitles.active());
+ } while (sound.isSoundPlaying() || (idx == 3 && _subtitles.active()));
}
- // Laugh
- sound.playSound("darklaff.voc");
- sound.setMusicPercent(75);
+ if (!sound._subtitles) {
+ // Laugh
+ sound.playSound("darklaff.voc");
+ sound.setMusicPercent(75);
+ }
// Alamar fade out
for (int idx = 12; idx >= 0; --idx) {
@@ -685,7 +696,7 @@ bool CloudsCutscenes::showCloudsEnding2() {
// Congratulations adventurers
const char *const VOC_NAMES[3] = { "king1.voc", "king2.voc", "king3.voc" };
- _subtitles.setLine(0);
+ _subtitles.setLine(12);
for (int idx = 0; idx < 3; ++idx) {
sound.playSound(VOC_NAMES[idx]);
@@ -699,7 +710,7 @@ bool CloudsCutscenes::showCloudsEnding2() {
_subtitles.show();
WAIT(3);
- } while (sound.isSoundPlaying() || _subtitles.active());
+ } while (sound.isSoundPlaying() || (idx == 2 && _subtitles.active()));
king.draw(0, 0, Common::Point(0, 0));
king.draw(0, 1, Common::Point(160, 0));
@@ -969,6 +980,7 @@ bool CloudsCutscenes::showCloudsEnding5() {
king.draw(0, 0, Common::Point(0, 0));
king.draw(0, 1, Common::Point(160, 0));
screen.fadeIn();
+ _subtitles.setLine(13);
sound.playSound("king4.voc");
do {
@@ -978,7 +990,6 @@ bool CloudsCutscenes::showCloudsEnding5() {
if (frame > 1)
king.draw(0, frame);
- _subtitles.show();
WAIT(3);
} while (sound.isSoundPlaying() || _subtitles.active());