diff options
| -rw-r--r-- | engines/bladerunner/obstacles.cpp | 2 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/bb05.cpp | 4 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/hc04.cpp | 4 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/ma06.cpp | 4 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/ps02.cpp | 9 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/ps04.cpp | 4 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/rc03.cpp | 4 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/tb06.cpp | 31 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/tb07.cpp | 4 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/ug03.cpp | 23 | 
10 files changed, 80 insertions, 9 deletions
diff --git a/engines/bladerunner/obstacles.cpp b/engines/bladerunner/obstacles.cpp index 9bdf4ffe9c..c94f271e2d 100644 --- a/engines/bladerunner/obstacles.cpp +++ b/engines/bladerunner/obstacles.cpp @@ -33,7 +33,7 @@  #include "common/debug.h"  #define DISABLE_PATHFINDING 0 -#define USE_PATHFINDING_EXPERIMENTAL_FIX_2 1 // Alternate Fix: Allows polygons merged on one point +#define USE_PATHFINDING_EXPERIMENTAL_FIX_2 0 // Alternate Fix: Allows polygons merged on one point  #define WITHIN_TOLERANCE(a, b) (((a) - 0.009) < (b) && ((a) + 0.009) > (b)) diff --git a/engines/bladerunner/script/scene/bb05.cpp b/engines/bladerunner/script/scene/bb05.cpp index 9ef70cbab3..ecf6897497 100644 --- a/engines/bladerunner/script/scene/bb05.cpp +++ b/engines/bladerunner/script/scene/bb05.cpp @@ -75,6 +75,10 @@ void SceneScriptBB05::SceneLoaded() {  	Clickable_Object("BOX06");  	Unclickable_Object("BOX06");  	Unclickable_Object("BOX14"); +#if BLADERUNNER_ORIGINAL_BUGS +#else +	Unclickable_Object("PINHEAD"); +#endif // BLADERUNNER_ORIGINAL_BUGS  	if (Actor_Query_Goal_Number(kActorSebastian) == 200) {  		Actor_Set_Goal_Number(kActorGeneralDoll, 299);  		Actor_Put_In_Set(kActorGeneralDoll, kSetFreeSlotG); diff --git a/engines/bladerunner/script/scene/hc04.cpp b/engines/bladerunner/script/scene/hc04.cpp index 4e1972c9ff..584c3ceac4 100644 --- a/engines/bladerunner/script/scene/hc04.cpp +++ b/engines/bladerunner/script/scene/hc04.cpp @@ -78,6 +78,10 @@ void SceneScriptHC04::SceneLoaded() {  	Obstacle_Object("CAN FIRE", true);  	Unobstacle_Object("ASIANMALE01", true);  	Clickable_Object("CAN FIRE"); +#if BLADERUNNER_ORIGINAL_BUGS +#else +	Unclickable_Object("CAN FIRE"); +#endif // BLADERUNNER_ORIGINAL_BUGS  }  bool SceneScriptHC04::MouseClick(int x, int y) { diff --git a/engines/bladerunner/script/scene/ma06.cpp b/engines/bladerunner/script/scene/ma06.cpp index 7e1e5303a3..319e30429d 100644 --- a/engines/bladerunner/script/scene/ma06.cpp +++ b/engines/bladerunner/script/scene/ma06.cpp @@ -53,6 +53,10 @@ void SceneScriptMA06::InitializeScene() {  void SceneScriptMA06::SceneLoaded() {  	Obstacle_Object("PANEL", true);  	Clickable_Object("PANEL"); +#if BLADERUNNER_ORIGINAL_BUGS +#else +	Unclickable_Object("PANEL"); +#endif // BLADERUNNER_ORIGINAL_BUGS  	if (_vm->_cutContent) {  		if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelShouldBeInElevatorMcCoysAct3) {  			// Put Rachael in set for her first cut scene (Act 3) when it plays out in the elevator diff --git a/engines/bladerunner/script/scene/ps02.cpp b/engines/bladerunner/script/scene/ps02.cpp index a3bbe7bb27..c8ff284f0d 100644 --- a/engines/bladerunner/script/scene/ps02.cpp +++ b/engines/bladerunner/script/scene/ps02.cpp @@ -44,6 +44,11 @@ void SceneScriptPS02::SceneLoaded() {  	Obstacle_Object("E.DOOR02", true);  	Clickable_Object("E.DOOR01");  	Clickable_Object("E.DOOR02"); +#if BLADERUNNER_ORIGINAL_BUGS +#else +	Unclickable_Object("E.DOOR01"); +	Unclickable_Object("E.DOOR02"); +#endif // BLADERUNNER_ORIGINAL_BUGS  }  bool SceneScriptPS02::MouseClick(int x, int y) { @@ -51,6 +56,9 @@ bool SceneScriptPS02::MouseClick(int x, int y) {  }  bool SceneScriptPS02::ClickedOn3DObject(const char *objectName, bool a2) { +#if BLADERUNNER_ORIGINAL_BUGS +	// McCoy never clicks on the door +	// This stuff is never called  	if (Object_Query_Click("E.DOOR01", objectName)  	 || Object_Query_Click("E.D00R02", objectName)  	) { @@ -91,6 +99,7 @@ bool SceneScriptPS02::ClickedOn3DObject(const char *objectName, bool a2) {  			}  		}  	} +#endif // BLADERUNNER_ORIGINAL_BUGS  	return false;  } diff --git a/engines/bladerunner/script/scene/ps04.cpp b/engines/bladerunner/script/scene/ps04.cpp index c856496016..e114ecbfd7 100644 --- a/engines/bladerunner/script/scene/ps04.cpp +++ b/engines/bladerunner/script/scene/ps04.cpp @@ -62,6 +62,10 @@ void SceneScriptPS04::SceneLoaded() {  	Unobstacle_Object("B.DOOR", true);  	Unobstacle_Object("B.CHAIR01", true);  	Unclickable_Object("CHAIR07"); +#if BLADERUNNER_ORIGINAL_BUGS +#else +	Unclickable_Object("FLOOR"); +#endif // BLADERUNNER_ORIGINAL_BUGS  	if ( Global_Variable_Query(kVariableChapter) == 2  	 && !Actor_Clue_Query(kActorMcCoy, kClueWeaponsOrderForm) diff --git a/engines/bladerunner/script/scene/rc03.cpp b/engines/bladerunner/script/scene/rc03.cpp index 8f70222ad0..bb6168a0a9 100644 --- a/engines/bladerunner/script/scene/rc03.cpp +++ b/engines/bladerunner/script/scene/rc03.cpp @@ -124,6 +124,10 @@ void SceneScriptRC03::SceneLoaded() {  	Unclickable_Object("BOX-BBCOLUMN02");  	Unclickable_Object("BOX-BBCOLUMN03");  	Unclickable_Object("BOX-BBCOLUMN04"); +#if BLADERUNNER_ORIGINAL_BUGS +#else +	Unclickable_Object("PARKING METER 01"); +#endif // BLADERUNNER_ORIGINAL_BUGS  	Unclickable_Object("PARKING METER 02");  	Unclickable_Object("PARKING METER 03");  	Unclickable_Object("TRASH CAN WITH FIRE"); diff --git a/engines/bladerunner/script/scene/tb06.cpp b/engines/bladerunner/script/scene/tb06.cpp index 4720989fad..68f5bbd39f 100644 --- a/engines/bladerunner/script/scene/tb06.cpp +++ b/engines/bladerunner/script/scene/tb06.cpp @@ -177,14 +177,29 @@ void SceneScriptTB06::PlayerWalkedIn() {  		Actor_Face_Actor(kActorMcCoy, kActorMarcus, true);  		Actor_Says(kActorMcCoy, 5290, kAnimationModeTalk);  		Loop_Actor_Walk_To_XYZ(kActorMcCoy, -10.0f, 149.0f, -631.0f, 0, false, false, false); -		AI_Movement_Track_Pause(kActorPhotographer); -		Actor_Face_Actor(kActorMcCoy, kActorPhotographer, true); -		Actor_Face_Actor(kActorPhotographer, kActorMcCoy, true); -		Actor_Says(kActorPhotographer, 0, kAnimationModeTalk); -		Actor_Says(kActorMcCoy, 5295, kAnimationModeTalk); -		Actor_Face_Actor(kActorPhotographer, kActorMarcus, true); -		Actor_Says(kActorPhotographer, 10, kAnimationModeTalk); -		AI_Movement_Track_Unpause(kActorPhotographer); + +		bool talkWithPhotographer = false; +#if BLADERUNNER_ORIGINAL_BUGS +		talkWithPhotographer = true; +#else +		// It's possible for McCoy to go to AR01 (so the kActorPhotographer will go away from TB06) +		// without ever going into this scene (TB06) +		// so later on in the Act, if McCoy visits this scene the Photographer would be gone +		// but the dialogue would play as if he was there. This fixes that bug. +		if (Actor_Query_Is_In_Current_Set(kActorPhotographer)) { +			talkWithPhotographer = true; +		} +#endif // BLADERUNNER_ORIGINAL_BUGS +		if (talkWithPhotographer) { +			AI_Movement_Track_Pause(kActorPhotographer); +			Actor_Face_Actor(kActorMcCoy, kActorPhotographer, true); +			Actor_Face_Actor(kActorPhotographer, kActorMcCoy, true); +			Actor_Says(kActorPhotographer, 0, kAnimationModeTalk); +			Actor_Says(kActorMcCoy, 5295, kAnimationModeTalk); +			Actor_Face_Actor(kActorPhotographer, kActorMarcus, true); +			Actor_Says(kActorPhotographer, 10, kAnimationModeTalk); +			AI_Movement_Track_Unpause(kActorPhotographer); +		}  		Game_Flag_Set(kFlagTB06Introduction);  		//return true;  		return; diff --git a/engines/bladerunner/script/scene/tb07.cpp b/engines/bladerunner/script/scene/tb07.cpp index 389ee9ee98..cde6e5f6b8 100644 --- a/engines/bladerunner/script/scene/tb07.cpp +++ b/engines/bladerunner/script/scene/tb07.cpp @@ -61,6 +61,10 @@ void SceneScriptTB07::InitializeScene() {  void SceneScriptTB07::SceneLoaded() {  	Obstacle_Object("EAGLE01", true);  	Clickable_Object("EAGLE01"); +#if BLADERUNNER_ORIGINAL_BUGS +#else +	Unclickable_Object("EAGLE01"); +#endif // BLADERUNNER_ORIGINAL_BUGS  }  bool SceneScriptTB07::MouseClick(int x, int y) { diff --git a/engines/bladerunner/script/scene/ug03.cpp b/engines/bladerunner/script/scene/ug03.cpp index daeab009e2..ed3c0d5699 100644 --- a/engines/bladerunner/script/scene/ug03.cpp +++ b/engines/bladerunner/script/scene/ug03.cpp @@ -69,6 +69,16 @@ void SceneScriptUG03::SceneLoaded() {  	Clickable_Object("CHAIR_SEAT");  	Clickable_Object("CHAIR_STRAPLEGLEFT");  	Clickable_Object("CHAIR_STRAPLEGRIGHT"); +#if BLADERUNNER_ORIGINAL_BUGS +#else +	if (Actor_Clue_Query(kActorMcCoy, kClueScaryChair)) { +		Unclickable_Object("CHAIR_HEADZAPPER"); +		Unclickable_Object("CHAIR_BACK"); +		Unclickable_Object("CHAIR_SEAT"); +		Unclickable_Object("CHAIR_STRAPLEGLEFT"); +		Unclickable_Object("CHAIR_STRAPLEGRIGHT"); +	} +#endif // BLADERUNNER_ORIGINAL_BUGS  }  bool SceneScriptUG03::MouseClick(int x, int y) { @@ -79,6 +89,11 @@ bool SceneScriptUG03::ClickedOn3DObject(const char *objectName, bool a2) {  	if (Object_Query_Click("CHAIR_BACK", objectName)  	 || Object_Query_Click("CHAIR_SEAT", objectName)  	 || Object_Query_Click("CHAIR_HEADZAPPER", objectName) +#if BLADERUNNER_ORIGINAL_BUGS +#else +	 || Object_Query_Click("CHAIR_STRAPLEGLEFT", objectName) +	 || Object_Query_Click("CHAIR_STRAPLEGRIGHT", objectName) +#endif // BLADERUNNER_ORIGINAL_BUGS  	) {  		if (!Loop_Actor_Walk_To_Scene_Object(kActorMcCoy, "CHAIR_BACK", 36, true, false)) {  			Actor_Face_Object(kActorMcCoy, "CHAIR_BACK", true); @@ -89,6 +104,14 @@ bool SceneScriptUG03::ClickedOn3DObject(const char *objectName, bool a2) {  				Actor_Voice_Over(2580, kActorVoiceOver);  				Actor_Voice_Over(2590, kActorVoiceOver);  				Actor_Clue_Acquire(kActorMcCoy, kClueScaryChair, true, -1); +#if BLADERUNNER_ORIGINAL_BUGS +#else +				Unclickable_Object("CHAIR_HEADZAPPER"); +				Unclickable_Object("CHAIR_BACK"); +				Unclickable_Object("CHAIR_SEAT"); +				Unclickable_Object("CHAIR_STRAPLEGLEFT"); +				Unclickable_Object("CHAIR_STRAPLEGRIGHT"); +#endif // BLADERUNNER_ORIGINAL_BUGS  			}  		}  	}  | 
