diff options
author | Filippos Karapetis | 2018-07-09 00:36:36 +0300 |
---|---|---|
committer | Filippos Karapetis | 2018-07-09 00:41:04 +0300 |
commit | fc5261b0c4216885b3f4bb8db2df3fba3fcd8433 (patch) | |
tree | 4c7a098d403055cea64d1b4d6f5a05d63bbdd272 /engines | |
parent | a5a45fdae16dbae164eb3f3a5ca9113e89851761 (diff) | |
download | scummvm-rg350-fc5261b0c4216885b3f4bb8db2df3fba3fcd8433.tar.gz scummvm-rg350-fc5261b0c4216885b3f4bb8db2df3fba3fcd8433.tar.bz2 scummvm-rg350-fc5261b0c4216885b3f4bb8db2df3fba3fcd8433.zip |
DREAMWEB: Fix speech during the monk cutscene in non-English versions
Fixes bugs #6288 and #6417
Diffstat (limited to 'engines')
-rw-r--r-- | engines/dreamweb/dreamweb.h | 1 | ||||
-rw-r--r-- | engines/dreamweb/people.cpp | 7 | ||||
-rw-r--r-- | engines/dreamweb/sprite.cpp | 139 |
3 files changed, 111 insertions, 36 deletions
diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h index f4a3c0020c..0231f142d8 100644 --- a/engines/dreamweb/dreamweb.h +++ b/engines/dreamweb/dreamweb.h @@ -724,6 +724,7 @@ public: void intro3Text(uint16 nextReelPointer); void monks2text(); + void monks2ShowText(uint8 textIndex, uint8 x, uint8 y); void textForEnd(); void textForMonkHelper(uint8 textIndex, uint8 voiceIndex, uint8 x, uint8 y, uint16 countToTimed, uint16 timeCount); void textForMonk(); diff --git a/engines/dreamweb/people.cpp b/engines/dreamweb/people.cpp index 6e47513a21..026f6d1570 100644 --- a/engines/dreamweb/people.cpp +++ b/engines/dreamweb/people.cpp @@ -523,9 +523,10 @@ void DreamWebEngine::candles(ReelRoutine &routine) { void DreamWebEngine::gates(ReelRoutine &routine) { if (checkSpeed(routine)) { uint16 nextReelPointer = routine.reelPointer() + 1; + uint16 checkIntro3ReelPointer = (getLanguage() != Common::ES_ESP) ? 110 : 111; if (nextReelPointer == 116) _sound->playChannel1(17); - if (nextReelPointer >= 110) + if (nextReelPointer >= checkIntro3ReelPointer) routine.period = 2; if (nextReelPointer == 120) { _getBack = 1; @@ -743,10 +744,12 @@ void DreamWebEngine::introMonks2(ReelRoutine &routine) { } if (nextReelPointer == 110) { + int introCountCheck = (getLanguage() != Common::DE_DEU && getLanguage() != Common::ES_ESP) ? 35 : 40; + _introCount++; monks2text(); - if (_introCount == 35) + if (_introCount == introCountCheck) nextReelPointer = 111; else nextReelPointer = 98; diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp index 633db73bcd..c5b4a2c840 100644 --- a/engines/dreamweb/sprite.cpp +++ b/engines/dreamweb/sprite.cpp @@ -532,41 +532,112 @@ void DreamWebEngine::intro3Text(uint16 nextReelPointer) { setupTimedTemp(46, 82, 36, 56, 100, 1); } -void DreamWebEngine::monks2text() { - bool isGermanCD = hasSpeech() && getLanguage() == Common::DE_DEU; +void DreamWebEngine::monks2ShowText(uint8 textIndex, uint8 x = 36, uint8 y = 160) { + setupTimedTemp(textIndex, 82, x, y, 120, 1); +} - if (_introCount == 1) - setupTimedTemp(8, 82, 36, 160, 120, 1); - else if (_introCount == (isGermanCD ? 5 : 4)) - setupTimedTemp(9, 82, 36, 160, 120, 1); - else if (_introCount == (isGermanCD ? 9 : 7)) - setupTimedTemp(10, 82, 36, 160, 120, 1); - else if (_introCount == 10 && !isGermanCD) { - if (hasSpeech()) - _introCount = 12; - setupTimedTemp(11, 82, 0, 105, 120, 1); - } else if (_introCount == 13 && isGermanCD) { - _introCount = 14; - setupTimedTemp(11, 82, 0, 105, 120, 1); - } else if (_introCount == 13 && !isGermanCD) { - if (hasSpeech()) - _introCount = 17; - else - setupTimedTemp(12, 82, 0, 120, 120, 1); - } else if (_introCount == 16 && !isGermanCD) - setupTimedTemp(13, 82, 0, 135, 120, 1); - else if (_introCount == 19) - setupTimedTemp(14, 82, 36, 160, 100, 1); - else if (_introCount == (isGermanCD ? 23 : 22)) - setupTimedTemp(15, 82, 36, 160, 120, 1); - else if (_introCount == (isGermanCD ? 27 : 25)) - setupTimedTemp(16, 82, 36, 160, 120, 1); - else if (_introCount == (hasSpeech() ? 27 : 28) && !isGermanCD) - setupTimedTemp(17, 82, 36, 160, 120, 1); - else if (_introCount == 30 && isGermanCD) - setupTimedTemp(17, 82, 36, 160, 120, 1); - else if (_introCount == (isGermanCD ? 35 : 31)) - setupTimedTemp(18, 82, 36, 160, 120, 1); +void DreamWebEngine::monks2text() { + if (getLanguage() != Common::DE_DEU && getLanguage() != Common::ES_ESP) { + switch (_introCount) { + case 1: + monks2ShowText(8); // Keepers. The web of dreams is slowly unwinding + break; + case 4: + monks2ShowText(9); // The seven evil powers on earth are joining forces + break; + case 7: + monks2ShowText(10); // If they become too strong the Dreamweb will be destroyed + break; + case 10: + if (hasSpeech()) + _introCount = 12; + monks2ShowText(11, 0, 105); // Who will be the deliverer? (monk 1) + break; + case 13: + if (hasSpeech()) + _introCount = 17; // Skip the speech of the third monk in the CD version + monks2ShowText(12, 0, 120); // When will it be? (monk 2) + break; + case 16: + monks2ShowText(13, 0, 135); // We must not let the web be broken (monk 3) (floppy version only) + break; + case 19: + monks2ShowText(14); // SILENCE! The chosen ones are becoming aware + break; + case 22: + monks2ShowText(15); // If they discover their powers they will become too strong + break; + case 25: + monks2ShowText(16); // Has the seed been planted? + break; + case 27: // CD + case 28: // Floppy + if ((_introCount == 27 && hasSpeech()) || (_introCount == 28 && !hasSpeech())) + monks2ShowText(17); // Yes, it has grown strong and he is stirring + break; + case 31: + monks2ShowText(18); // The time has come and I shall awaken him + break; + default: + break; + } + } else { + switch (_introCount) { + case 1: + monks2ShowText(8); // WÅchter! Das Netz der TrÅume fÅngt an sich aufzulÖsen + break; + case 4: // Floppy + case 5: // CD + if ((_introCount == 4 && !hasSpeech()) || (_introCount == 5 && hasSpeech())) + monks2ShowText(9); // Die sieben bÖsen MÅchte der Erde fangen an sich zu sammeln + break; + case 7: // Floppy + case 9: // CD + if ((_introCount == 7 && !hasSpeech()) || (_introCount == 9 && hasSpeech())) + monks2ShowText(10); // Wenn sie zu mÅchtig werden, wird das Dreamweb zerstÖrt + break; + case 10: // Floppy + case 13: // CD and floppy + if (_introCount == 10 && !hasSpeech()) { + monks2ShowText(11, 0, 105); // Wer wird der Bote sein? + } else if (_introCount == 13 && hasSpeech()) { + _introCount = 14; + monks2ShowText(11, 0, 105); // Wer wird der Bote sein? + } else if (_introCount == 13 && !hasSpeech()) { + monks2ShowText(12, 0, 120); + } + break; + case 16: + if (!hasSpeech()) + monks2ShowText(13, 0, 135); + break; + case 19: + monks2ShowText(14); // SCHWEIGT! Die AuserwÅhlten sammeln sich + break; + case 22: // Floppy + case 23: // CD + if ((_introCount == 22 && !hasSpeech()) || (_introCount == 23 && hasSpeech())) + monks2ShowText(15); // Wenn sie ihre KrÅfte entdecken, werden sie zu mÅchtig sein + break; + case 25: // Floppy + case 27: // CD + if ((_introCount == 25 && !hasSpeech()) || (_introCount == 27 && hasSpeech())) + monks2ShowText(16); // Ist die Saat gepflanzt? + break; + case 28: // Floppy + case 30: // CD + if ((_introCount == 28 && !hasSpeech()) || (_introCount == 30 && hasSpeech())) + monks2ShowText(17); // Ja. Sie ist zu einem groÜen und stattlichen Man herangewachsen + break; + case 31: // Floppy + case 35: // CD + if ((_introCount == 31 && !hasSpeech()) || (_introCount == 35 && hasSpeech())) + monks2ShowText(18); // Sein Name ist Ryan. Die Zeit ist gekommen, ihn zu erwecken + break; + default: + break; + } + } } void DreamWebEngine::textForEnd() { |