diff options
-rw-r--r-- | engines/bladerunner/game_constants.h | 2 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/rc02.cpp | 61 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/rc51.cpp | 13 |
3 files changed, 69 insertions, 7 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h index f672a14c74..da3d3568e9 100644 --- a/engines/bladerunner/game_constants.h +++ b/engines/bladerunner/game_constants.h @@ -444,7 +444,7 @@ enum Flags { kFlagGamePlayedInRestoredContentMode = 2, // Re-purposed. Original: 2 is never used kFlagRC01GotOfficersStatement = 3, kFlagRC02Left = 4, - // 5 is never used + kFlagMcCoyCommentsOnMurderedAnimals = 5, // Re-purposed. Original: 5 is never used kFlagRC02RunciterInterview = 6, kFlagCT01TalkToHowieAboutDeadZuben = 7, // Re-purposed. Original: 7 is never used kFlagRC01toRC02 = 8, diff --git a/engines/bladerunner/script/scene/rc02.cpp b/engines/bladerunner/script/scene/rc02.cpp index 15d8cfe453..049427f235 100644 --- a/engines/bladerunner/script/scene/rc02.cpp +++ b/engines/bladerunner/script/scene/rc02.cpp @@ -75,12 +75,37 @@ void SceneScriptRC02::SceneLoaded() { Clickable_Object("SCRTY CA03"); Unclickable_Object("GRL_DSKLEG"); Unclickable_Object("CURTAIN"); - Unclickable_Object("DRAPE01"); - Unclickable_Object("DRAPE02"); - Unclickable_Object("DRAPE03"); - Unclickable_Object("DRAPE05"); - Unclickable_Object("DRAPE06"); - Unclickable_Object("DRAPE07"); + if (_vm->_cutContent) { + if (Global_Variable_Query(kVariableChapter) == 1 + && !Game_Flag_Query(kFlagMcCoyCommentsOnMurderedAnimals) + && !Actor_Clue_Query(kActorMcCoy, kClueLabCorpses) + ) { + Clickable_Object("DRAPE01"); + Clickable_Object("DRAPE02"); + Clickable_Object("DRAPE03"); + Clickable_Object("DRAPE04"); + Clickable_Object("DRAPE05"); + Clickable_Object("DRAPE06"); + Clickable_Object("DRAPE07"); + } else { + Unclickable_Object("DRAPE01"); + Unclickable_Object("DRAPE02"); + Unclickable_Object("DRAPE03"); + Unclickable_Object("DRAPE04"); + Unclickable_Object("DRAPE05"); + Unclickable_Object("DRAPE06"); + Unclickable_Object("DRAPE07"); + } + } else { + // original code + Unclickable_Object("DRAPE01"); + Unclickable_Object("DRAPE02"); + Unclickable_Object("DRAPE03"); + Unclickable_Object("DRAPE05"); + Unclickable_Object("DRAPE06"); + Unclickable_Object("DRAPE07"); + } + if (Actor_Clue_Query(kActorMcCoy, kClueRuncitersVideo) || Global_Variable_Query(kVariableChapter) > 1) { Unclickable_Object("SCRTY CA03"); } @@ -133,6 +158,30 @@ bool SceneScriptRC02::ClickedOn3DObject(const char *objectName, bool a2) { return true; } } + + if (_vm->_cutContent + && !Game_Flag_Query(kFlagMcCoyCommentsOnMurderedAnimals) + && Global_Variable_Query(kVariableChapter) == 1 + && !Actor_Clue_Query(kActorMcCoy, kClueLabCorpses) + && (Object_Query_Click("DRAPE01", objectName) + || Object_Query_Click("DRAPE02", objectName) + || Object_Query_Click("DRAPE03", objectName) + || Object_Query_Click("DRAPE04", objectName) + || Object_Query_Click("DRAPE05", objectName) + || Object_Query_Click("DRAPE06", objectName) + || Object_Query_Click("DRAPE07", objectName)) + ) { + Game_Flag_Set(kFlagMcCoyCommentsOnMurderedAnimals); + Unclickable_Object("DRAPE01"); + Unclickable_Object("DRAPE02"); + Unclickable_Object("DRAPE03"); + Unclickable_Object("DRAPE04"); + Unclickable_Object("DRAPE05"); + Unclickable_Object("DRAPE06"); + Unclickable_Object("DRAPE07"); + Actor_Voice_Over(1940, kActorVoiceOver); + return true; + } return false; } diff --git a/engines/bladerunner/script/scene/rc51.cpp b/engines/bladerunner/script/scene/rc51.cpp index cc54684891..9cac458594 100644 --- a/engines/bladerunner/script/scene/rc51.cpp +++ b/engines/bladerunner/script/scene/rc51.cpp @@ -47,6 +47,19 @@ void SceneScriptRC51::SceneLoaded() { Unclickable_Object("GRL_DSK"); Unclickable_Object("GRL_DSKLEG"); Unclickable_Object("CURTAIN"); +#if BLADERUNNER_ORIGINAL_BUGS +#else + Unclickable_Object("SCRTY CA03"); + Unclickable_Object("DRAPE01"); + Unclickable_Object("DRAPE02"); + Unclickable_Object("DRAPE03"); + Unclickable_Object("DRAPE04"); + Unclickable_Object("DRAPE05"); + Unclickable_Object("DRAPE06"); + Unclickable_Object("DRAPE07"); + Unclickable_Object("DRAPE08"); +#endif // BLADERUNNER_ORIGINAL_BUGS + if (!Game_Flag_Query(kFlagRC51ChopstickWrapperTaken)) { Item_Add_To_World(kItemChopstickWrapper, kModelAnimationChopstickWrapper, kSetRC02_RC51, 47.56f, -1238.89f, 108048.61f, 0, 6, 18, false, true, false, true); } |