From 0e112b964c4cde11dcdeb8ca809a8e8de496ab6e Mon Sep 17 00:00:00 2001 From: Thanasis Antoniou Date: Sat, 11 May 2019 20:01:40 +0300 Subject: BLADERUNNER: cut content now loads all TLK resources Work-around for cut content stored in wrong TLK files --- engines/bladerunner/chapters.cpp | 24 +++++++++++++++++++++--- engines/bladerunner/script/kia_script.cpp | 6 +++--- engines/bladerunner/script/scene/rc01.cpp | 2 +- 3 files changed, 25 insertions(+), 7 deletions(-) (limited to 'engines') 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); -- cgit v1.2.3