aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThanasis Antoniou2019-05-11 20:01:40 +0300
committerThanasis Antoniou2019-05-13 03:29:00 +0300
commit0e112b964c4cde11dcdeb8ca809a8e8de496ab6e (patch)
treeca5eab2585444ac25c01a4766078ea175992b020
parent048bab9115c7bdbcecbdb9e44a9467bf888b3e24 (diff)
downloadscummvm-rg350-0e112b964c4cde11dcdeb8ca809a8e8de496ab6e.tar.gz
scummvm-rg350-0e112b964c4cde11dcdeb8ca809a8e8de496ab6e.tar.bz2
scummvm-rg350-0e112b964c4cde11dcdeb8ca809a8e8de496ab6e.zip
BLADERUNNER: cut content now loads all TLK resources
Work-around for cut content stored in wrong TLK files
-rw-r--r--engines/bladerunner/chapters.cpp24
-rw-r--r--engines/bladerunner/script/kia_script.cpp6
-rw-r--r--engines/bladerunner/script/scene/rc01.cpp2
3 files changed, 25 insertions, 7 deletions
diff --git a/engines/bladerunner/chapters.cpp b/engines/bladerunner/chapters.cpp
index 09ab94bb98..7cf7c5e0f5 100644
--- a/engines/bladerunner/chapters.cpp
+++ b/engines/bladerunner/chapters.cpp
@@ -39,8 +39,18 @@ bool Chapters::enterChapter(int chapter) {
if (!_vm->openArchive(Common::String::format("VQA%d.MIX", MIN(id, 3))))
return false;
- if (!_vm->openArchive(Common::String::format("%d.TLK", MIN(id, 3))))
- return false;
+ if (_vm->_cutContent) {
+ for (int chi = 1; chi < 4; ++chi) {
+ if (!_vm->isArchiveOpen(Common::String::format("%d.TLK", chi))
+ && !_vm->openArchive(Common::String::format("%d.TLK", chi))
+ ){
+ return false;
+ }
+ }
+ } else {
+ if (!_vm->openArchive(Common::String::format("%d.TLK", MIN(id, 3))))
+ return false;
+ }
if (!_vm->openArchive(Common::String::format("OUTTAKE%d.MIX", id)))
return false;
@@ -61,7 +71,15 @@ void Chapters::closeResources() {
}
#endif // BLADERUNNER_ORIGINAL_BUGS
_vm->closeArchive(Common::String::format("VQA%d.MIX", MIN(id, 3)));
- _vm->closeArchive(Common::String::format("%d.TLK", MIN(id, 3)));
+ if (_vm->_cutContent) {
+ for (int chi = 1; chi < 4; ++chi) {
+ if (_vm->isArchiveOpen(Common::String::format("%d.TLK", chi))) {
+ _vm->closeArchive(Common::String::format("%d.TLK", chi));
+ }
+ }
+ } else {
+ _vm->closeArchive(Common::String::format("%d.TLK", MIN(id, 3)));
+ }
_vm->closeArchive(Common::String::format("OUTTAKE%d.MIX", id));
_hasOpenResources = false;
}
diff --git a/engines/bladerunner/script/kia_script.cpp b/engines/bladerunner/script/kia_script.cpp
index a6416d24f5..10afa16b67 100644
--- a/engines/bladerunner/script/kia_script.cpp
+++ b/engines/bladerunner/script/kia_script.cpp
@@ -46,9 +46,9 @@ void KIAScript::SCRIPT_KIA_DLL_Play_Clue_Asset_Script(int notUsed, int clueId) {
KIA_Play_Actor_Dialogue(kActorOfficerLeary, 0);
break;
case kClueDoorForced1:
- if (_vm->_cutContent && _vm->_gameVars[kVariableChapter] == 1) {
- // unfortunately this line is only available in TLK1 (so only Act 1)
- // it will be silent in subsequent Acts
+ if (_vm->_cutContent || _vm->_gameVars[kVariableChapter] == 1) {
+ // keep in mind, this line in only available in Act 1 (1.TLK) unless _vm->_cutContent is selected (provided that cut content now loads all TLKs)
+ // Without cut content it will be silent in subsequent Acts
KIA_Play_Actor_Dialogue(kActorVoiceOver, 1870);
}
break;
diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp
index e35c231fe9..c07ff463f2 100644
--- a/engines/bladerunner/script/scene/rc01.cpp
+++ b/engines/bladerunner/script/scene/rc01.cpp
@@ -278,7 +278,7 @@ bool SceneScriptRC01::ClickedOn3DObject(const char *objectName, bool a2) {
&& !Actor_Query_In_Set(kActorOfficerLeary, kSetRC01)
&& Global_Variable_Query(kVariableChapter) == 1) {
if (_vm->_cutContent) {
- // keep in mind, this line in only available in Act 1
+ // keep in mind, this line in only available in Act 1 (1.TLK) unless _vm->_cutContent is selected (provided that cut content now loads all TLKs)
Actor_Voice_Over(1870, kActorVoiceOver);
} else {
Actor_Says(kActorMcCoy, 8570, 14);